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-14 17:57:47 +0300
committerAntenore Gatta <antenore@simbiosi.org>2022-11-14 17:57:47 +0300
commitb0a55ee4705599a27edf0cd5d6bfea1308a2b75d (patch)
treebd0da582b678414f6dbb10eff8b097fd5305b79e
parentd9ef38251afe1f8c2da1fc84c44964d54e8da8e3 (diff)
Automatic doc build by remmina-ci
-rw-r--r--public/annotated.html161
-rw-r--r--public/annotated_dup.js1
-rw-r--r--public/classes.html54
-rw-r--r--public/dir_68267d1309a1af8e8297ef4c3efbcdba.html4
-rw-r--r--public/files.html46
-rw-r--r--public/files.js2
-rw-r--r--public/functions_b.html1
-rw-r--r--public/functions_d.html1
-rw-r--r--public/functions_p.html12
-rw-r--r--public/functions_r.html23
-rw-r--r--public/functions_s.html3
-rw-r--r--public/functions_vars_b.html1
-rw-r--r--public/functions_vars_d.html1
-rw-r--r--public/functions_vars_p.html12
-rw-r--r--public/functions_vars_r.html23
-rw-r--r--public/functions_vars_s.html3
-rw-r--r--public/globals_d.html12
-rw-r--r--public/globals_e.html3
-rw-r--r--public/globals_func_r.html322
-rw-r--r--public/globals_o.html7
-rw-r--r--public/globals_r.html312
-rw-r--r--public/globals_s.html10
-rw-r--r--public/globals_type.html3
-rw-r--r--public/globals_vars.js1
-rw-r--r--public/globals_vars_d.html8
-rw-r--r--public/globals_vars_e.html3
-rw-r--r--public/globals_vars_r.html3
-rw-r--r--public/globals_vars_s.html10
-rw-r--r--public/menudata.js1
-rw-r--r--public/navtreedata.js36
-rw-r--r--public/navtreeindex0.js22
-rw-r--r--public/navtreeindex1.js4
-rw-r--r--public/navtreeindex10.js58
-rw-r--r--public/navtreeindex11.js196
-rw-r--r--public/navtreeindex12.js192
-rw-r--r--public/navtreeindex13.js500
-rw-r--r--public/navtreeindex14.js500
-rw-r--r--public/navtreeindex15.js500
-rw-r--r--public/navtreeindex16.js500
-rw-r--r--public/navtreeindex17.js498
-rw-r--r--public/navtreeindex18.js261
-rw-r--r--public/navtreeindex2.js4
-rw-r--r--public/navtreeindex3.js4
-rw-r--r--public/navtreeindex4.js22
-rw-r--r--public/navtreeindex5.js6
-rw-r--r--public/navtreeindex6.js76
-rw-r--r--public/navtreeindex7.js82
-rw-r--r--public/navtreeindex8.js10
-rw-r--r--public/navtreeindex9.js10
-rw-r--r--public/rcw_8c_source.html16
-rw-r--r--public/remmina_8c.html44
-rw-r--r--public/remmina_8c.js1
-rw-r--r--public/remmina_8c_source.html31
-rw-r--r--public/remmina_8h.html2
-rw-r--r--public/remmina_8h_source.html2
-rw-r--r--public/remmina__exec_8c_source.html16
-rw-r--r--public/remmina__file_8c_source.html4
-rw-r--r--public/remmina__file__editor_8c_source.html6
-rw-r--r--public/remmina__file__manager_8c_source.html2
-rw-r--r--public/remmina__icon_8c_source.html2
-rw-r--r--public/remmina__log_8c_source.html2
-rw-r--r--public/remmina__main_8c.html241
-rw-r--r--public/remmina__main_8c.js1
-rw-r--r--public/remmina__main_8c_source.html169
-rw-r--r--public/remmina__main_8h.html100
-rw-r--r--public/remmina__main_8h.js1
-rw-r--r--public/remmina__main_8h_source.html63
-rw-r--r--public/remmina__mpchange_8c_source.html2
-rw-r--r--public/remmina__plugin__manager_8c_source.html20
-rw-r--r--public/remmina__pref_8c.html39
-rw-r--r--public/remmina__pref_8c_source.html52
-rw-r--r--public/remmina__pref_8h.html47
-rw-r--r--public/remmina__pref_8h_source.html52
-rw-r--r--public/remmina__pref__dialog_8c.html14
-rw-r--r--public/remmina__pref__dialog_8c_source.html178
-rw-r--r--public/remmina__pref__dialog_8h.html6
-rw-r--r--public/remmina__pref__dialog_8h_source.html165
-rw-r--r--public/remmina__protocol__widget_8c_source.html5
-rw-r--r--public/remmina__ssh_8c.html6
-rw-r--r--public/remmina__ssh_8c_source.html3
-rw-r--r--public/remmina__stats_8c_source.html4
-rw-r--r--public/remmina__unlock_8c_source.html4
-rw-r--r--public/remmina__utils_8c.html25
-rw-r--r--public/remmina__utils_8c.js1
-rw-r--r--public/remmina__utils_8c_source.html3
-rw-r--r--public/remmina__utils_8h.html25
-rw-r--r--public/remmina__utils_8h.js1
-rw-r--r--public/remmina__utils_8h_source.html3
-rw-r--r--public/search/all_0.js1
-rw-r--r--public/search/all_10.js4
-rw-r--r--public/search/all_12.js33
-rw-r--r--public/search/all_13.js5
-rw-r--r--public/search/all_14.js2
-rw-r--r--public/search/all_2.js2
-rw-r--r--public/search/all_4.js3
-rw-r--r--public/search/all_5.js1
-rw-r--r--public/search/all_f.js1
-rw-r--r--public/search/classes_0.js1
-rw-r--r--public/search/files_f.js4
-rw-r--r--public/search/functions_11.js15
-rw-r--r--public/search/typedefs_6.js1
-rw-r--r--public/search/variables_11.js9
-rw-r--r--public/search/variables_12.js5
-rw-r--r--public/search/variables_13.js2
-rw-r--r--public/search/variables_2.js2
-rw-r--r--public/search/variables_4.js3
-rw-r--r--public/search/variables_5.js1
-rw-r--r--public/search/variables_e.js1
-rw-r--r--public/search/variables_f.js4
-rw-r--r--public/spice__plugin_8c_source.html3
-rw-r--r--public/struct___remmina_pref.html72
-rw-r--r--public/struct___remmina_pref.js4
-rw-r--r--public/struct___remmina_pref_dialog.html172
-rw-r--r--public/struct___remmina_pref_dialog.js1
-rw-r--r--public/x2go__plugin_8c_source.html3
115 files changed, 2814 insertions, 3423 deletions
diff --git a/public/annotated.html b/public/annotated.html
index 538aad11c..162cdaf44 100644
--- a/public/annotated.html
+++ b/public/annotated.html
@@ -125,87 +125,86 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_main.html" target="_self">_RemminaMain</a></td><td class="desc"></td></tr>
<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_main_priv.html" target="_self">_RemminaMainPriv</a></td><td class="desc"></td></tr>
<tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_monitor.html" target="_self">_RemminaMonitor</a></td><td class="desc"></td></tr>
-<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_news_dialog.html" target="_self">_RemminaNewsDialog</a></td><td class="desc"></td></tr>
-<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_passwd_dialog.html" target="_self">_RemminaPasswdDialog</a></td><td class="desc"></td></tr>
-<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin.html" target="_self">_RemminaPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_exec_data.html" target="_self">_RemminaPluginExecData</a></td><td class="desc"></td></tr>
-<tr id="row_41_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_rdpset_grid.html" target="_self">_RemminaPluginRdpsetGrid</a></td><td class="desc"></td></tr>
-<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html" target="_self">_RemminaPluginRdpsetGridClass</a></td><td class="desc"></td></tr>
-<tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_screenshot_data.html" target="_self">_RemminaPluginScreenshotData</a></td><td class="desc"></td></tr>
-<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_service.html" target="_self">_RemminaPluginService</a></td><td class="desc"></td></tr>
-<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_sftp_data.html" target="_self">_RemminaPluginSftpData</a></td><td class="desc"></td></tr>
-<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_spice_data.html" target="_self">_RemminaPluginSpiceData</a></td><td class="desc"></td></tr>
-<tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html" target="_self">_RemminaPluginSpiceXferWidgets</a></td><td class="desc"></td></tr>
-<tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_ssh_data.html" target="_self">_RemminaPluginSshData</a></td><td class="desc"></td></tr>
-<tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_coordinates.html" target="_self">_RemminaPluginVncCoordinates</a></td><td class="desc"></td></tr>
-<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html" target="_self">_RemminaPluginVncCuttextParam</a></td><td class="desc"></td></tr>
-<tr id="row_51_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_data.html" target="_self">_RemminaPluginVncData</a></td><td class="desc"></td></tr>
-<tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_event.html" target="_self">_RemminaPluginVncEvent</a></td><td class="desc"></td></tr>
-<tr id="row_53_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_w_w_w_data.html" target="_self">_RemminaPluginWWWData</a></td><td class="desc"></td></tr>
-<tr id="row_54_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_x2_go_data.html" target="_self">_RemminaPluginX2GoData</a></td><td class="desc"></td></tr>
-<tr id="row_55_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref.html" target="_self">_RemminaPref</a></td><td class="desc"></td></tr>
-<tr id="row_56_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_dialog.html" target="_self">_RemminaPrefDialog</a></td><td class="desc"></td></tr>
-<tr id="row_57_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_dialog_priv.html" target="_self">_RemminaPrefDialogPriv</a></td><td class="desc"></td></tr>
-<tr id="row_58_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_plugin.html" target="_self">_RemminaPrefPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_59_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_feature.html" target="_self">_RemminaProtocolFeature</a></td><td class="desc"></td></tr>
-<tr id="row_60_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_plugin.html" target="_self">_RemminaProtocolPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_61_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_setting.html" target="_self">_RemminaProtocolSetting</a></td><td class="desc"></td></tr>
-<tr id="row_62_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_setting_opt.html" target="_self">_RemminaProtocolSettingOpt</a></td><td class="desc"></td></tr>
-<tr id="row_63_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget.html" target="_self">_RemminaProtocolWidget</a></td><td class="desc"></td></tr>
-<tr id="row_64_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_class.html" target="_self">_RemminaProtocolWidgetClass</a></td><td class="desc"></td></tr>
-<tr id="row_65_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_priv.html" target="_self">_RemminaProtocolWidgetPriv</a></td><td class="desc"></td></tr>
-<tr id="row_66_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_signal_data.html" target="_self">_RemminaProtocolWidgetSignalData</a></td><td class="desc"></td></tr>
-<tr id="row_67_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_scrolled_viewport.html" target="_self">_RemminaScrolledViewport</a></td><td class="desc"></td></tr>
-<tr id="row_68_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_scrolled_viewport_class.html" target="_self">_RemminaScrolledViewportClass</a></td><td class="desc"></td></tr>
-<tr id="row_69_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_secret_plugin.html" target="_self">_RemminaSecretPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_70_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p.html" target="_self">_RemminaSFTP</a></td><td class="desc"></td></tr>
-<tr id="row_71_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p_client.html" target="_self">_RemminaSFTPClient</a></td><td class="desc"></td></tr>
-<tr id="row_72_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p_client_class.html" target="_self">_RemminaSFTPClientClass</a></td><td class="desc"></td></tr>
-<tr id="row_73_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h.html" target="_self">_RemminaSSH</a></td><td class="desc"></td></tr>
-<tr id="row_74_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_ssh_search.html" target="_self">_RemminaSshSearch</a></td><td class="desc">The SSH plugin implementation </td></tr>
-<tr id="row_75_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h_shell.html" target="_self">_RemminaSSHShell</a></td><td class="desc"></td></tr>
-<tr id="row_76_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h_tunnel.html" target="_self">_RemminaSSHTunnel</a></td><td class="desc"></td></tr>
-<tr id="row_77_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_string_list.html" target="_self">_RemminaStringList</a></td><td class="desc"></td></tr>
-<tr id="row_78_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_string_list_priv.html" target="_self">_RemminaStringListPriv</a></td><td class="desc"></td></tr>
-<tr id="row_79_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tool_plugin.html" target="_self">_RemminaToolPlugin</a></td><td class="desc"></td></tr>
-<tr id="row_80_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_channel_handler.html" target="_self">_RemminaTpChannelHandler</a></td><td class="desc"></td></tr>
-<tr id="row_81_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_handler.html" target="_self">_RemminaTpHandler</a></td><td class="desc"></td></tr>
-<tr id="row_82_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_handler_class.html" target="_self">_RemminaTpHandlerClass</a></td><td class="desc"></td></tr>
-<tr id="row_83_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_unlock_dialog.html" target="_self">_RemminaUnlockDialog</a></td><td class="desc"></td></tr>
-<tr id="row_84_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___x2_go_custom_user_data.html" target="_self">_X2GoCustomUserData</a></td><td class="desc">Can be used to pass custom user data between functions and threads </td></tr>
-<tr id="row_85_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdistro__info.html" target="_self">distro_info</a></td><td class="desc"></td></tr>
-<tr id="row_86_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structitem.html" target="_self">item</a></td><td class="desc"></td></tr>
-<tr id="row_87_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlsb__distro__info.html" target="_self">lsb_distro_info</a></td><td class="desc"></td></tr>
-<tr id="row_88_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmpchanger__params.html" target="_self">mpchanger_params</a></td><td class="desc"></td></tr>
-<tr id="row_89_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_mp_run_info.html" target="_self">MpRunInfo</a></td><td class="desc"></td></tr>
-<tr id="row_90_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structon_main_thread__cb__data.html" target="_self">onMainThread_cb_data</a></td><td class="desc"></td></tr>
-<tr id="row_91_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_p_con___spinner.html" target="_self">PCon_Spinner</a></td><td class="desc"></td></tr>
-<tr id="row_92_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_profiles_data.html" target="_self">ProfilesData</a></td><td class="desc"></td></tr>
-<tr id="row_93_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_boxed.html" target="_self">PyGBoxed</a></td><td class="desc"></td></tr>
-<tr id="row_94_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_generic.html" target="_self">PyGeneric</a></td><td class="desc">A struct used to communicate data between Python and C without strict data type </td></tr>
-<tr id="row_95_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_object.html" target="_self">PyGObject</a></td><td class="desc"></td></tr>
-<tr id="row_96_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_param_spec.html" target="_self">PyGParamSpec</a></td><td class="desc"></td></tr>
-<tr id="row_97_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_pointer.html" target="_self">PyGPointer</a></td><td class="desc"></td></tr>
-<tr id="row_98_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_plugin.html" target="_self">PyPlugin</a></td><td class="desc">Maps an instance of a Python plugin to a Remmina one </td></tr>
-<tr id="row_99_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_file.html" target="_self">PyRemminaFile</a></td><td class="desc">Wrapper for a Python object that contains a pointer to an instance of RemminaFile </td></tr>
-<tr id="row_100_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_plugin_screenshot_data.html" target="_self">PyRemminaPluginScreenshotData</a></td><td class="desc"></td></tr>
-<tr id="row_101_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_feature.html" target="_self">PyRemminaProtocolFeature</a></td><td class="desc">Wrapper for a Python object that contains a pointer to an instance of RemminaProtocolFeature </td></tr>
-<tr id="row_102_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_setting.html" target="_self">PyRemminaProtocolSetting</a></td><td class="desc">Adapter struct to handle Remmina protocol settings </td></tr>
-<tr id="row_103_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_widget.html" target="_self">PyRemminaProtocolWidget</a></td><td class="desc">The Python abstraction of the protocol widget struct </td></tr>
-<tr id="row_104_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structregion.html" target="_self">region</a></td><td class="desc"></td></tr>
-<tr id="row_105_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__masterthread__exec__data.html" target="_self">remmina_masterthread_exec_data</a></td><td class="desc"></td></tr>
-<tr id="row_106_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__event.html" target="_self">remmina_plugin_rdp_event</a></td><td class="desc"></td></tr>
-<tr id="row_107_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__keymap__entry.html" target="_self">remmina_plugin_rdp_keymap_entry</a></td><td class="desc"></td></tr>
-<tr id="row_108_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__ui__object.html" target="_self">remmina_plugin_rdp_ui_object</a></td><td class="desc"></td></tr>
-<tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html" target="_self">remmina_protocol_widget_dialog_mt_data_t</a></td><td class="desc"></td></tr>
-<tr id="row_110_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_remmina_message_panel_private.html" target="_self">RemminaMessagePanelPrivate</a></td><td class="desc"></td></tr>
-<tr id="row_111_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_remmina_plugin_loader.html" target="_self">RemminaPluginLoader</a></td><td class="desc"></td></tr>
-<tr id="row_112_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__bitmap.html" target="_self">rf_bitmap</a></td><td class="desc"></td></tr>
-<tr id="row_113_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__clipboard.html" target="_self">rf_clipboard</a></td><td class="desc"></td></tr>
-<tr id="row_114_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__context.html" target="_self">rf_context</a></td><td class="desc"></td></tr>
-<tr id="row_115_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__glyph.html" target="_self">rf_glyph</a></td><td class="desc"></td></tr>
-<tr id="row_116_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__pointer.html" target="_self">rf_pointer</a></td><td class="desc"></td></tr>
-<tr id="row_117_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrs_sched_data.html" target="_self">rsSchedData</a></td><td class="desc"></td></tr>
+<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_passwd_dialog.html" target="_self">_RemminaPasswdDialog</a></td><td class="desc"></td></tr>
+<tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin.html" target="_self">_RemminaPlugin</a></td><td class="desc"></td></tr>
+<tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_exec_data.html" target="_self">_RemminaPluginExecData</a></td><td class="desc"></td></tr>
+<tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_rdpset_grid.html" target="_self">_RemminaPluginRdpsetGrid</a></td><td class="desc"></td></tr>
+<tr id="row_41_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html" target="_self">_RemminaPluginRdpsetGridClass</a></td><td class="desc"></td></tr>
+<tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_screenshot_data.html" target="_self">_RemminaPluginScreenshotData</a></td><td class="desc"></td></tr>
+<tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_service.html" target="_self">_RemminaPluginService</a></td><td class="desc"></td></tr>
+<tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_sftp_data.html" target="_self">_RemminaPluginSftpData</a></td><td class="desc"></td></tr>
+<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_spice_data.html" target="_self">_RemminaPluginSpiceData</a></td><td class="desc"></td></tr>
+<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html" target="_self">_RemminaPluginSpiceXferWidgets</a></td><td class="desc"></td></tr>
+<tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_ssh_data.html" target="_self">_RemminaPluginSshData</a></td><td class="desc"></td></tr>
+<tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_coordinates.html" target="_self">_RemminaPluginVncCoordinates</a></td><td class="desc"></td></tr>
+<tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html" target="_self">_RemminaPluginVncCuttextParam</a></td><td class="desc"></td></tr>
+<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_data.html" target="_self">_RemminaPluginVncData</a></td><td class="desc"></td></tr>
+<tr id="row_51_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_vnc_event.html" target="_self">_RemminaPluginVncEvent</a></td><td class="desc"></td></tr>
+<tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_w_w_w_data.html" target="_self">_RemminaPluginWWWData</a></td><td class="desc"></td></tr>
+<tr id="row_53_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_plugin_x2_go_data.html" target="_self">_RemminaPluginX2GoData</a></td><td class="desc"></td></tr>
+<tr id="row_54_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref.html" target="_self">_RemminaPref</a></td><td class="desc"></td></tr>
+<tr id="row_55_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_dialog.html" target="_self">_RemminaPrefDialog</a></td><td class="desc"></td></tr>
+<tr id="row_56_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_dialog_priv.html" target="_self">_RemminaPrefDialogPriv</a></td><td class="desc"></td></tr>
+<tr id="row_57_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_pref_plugin.html" target="_self">_RemminaPrefPlugin</a></td><td class="desc"></td></tr>
+<tr id="row_58_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_feature.html" target="_self">_RemminaProtocolFeature</a></td><td class="desc"></td></tr>
+<tr id="row_59_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_plugin.html" target="_self">_RemminaProtocolPlugin</a></td><td class="desc"></td></tr>
+<tr id="row_60_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_setting.html" target="_self">_RemminaProtocolSetting</a></td><td class="desc"></td></tr>
+<tr id="row_61_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_setting_opt.html" target="_self">_RemminaProtocolSettingOpt</a></td><td class="desc"></td></tr>
+<tr id="row_62_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget.html" target="_self">_RemminaProtocolWidget</a></td><td class="desc"></td></tr>
+<tr id="row_63_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_class.html" target="_self">_RemminaProtocolWidgetClass</a></td><td class="desc"></td></tr>
+<tr id="row_64_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_priv.html" target="_self">_RemminaProtocolWidgetPriv</a></td><td class="desc"></td></tr>
+<tr id="row_65_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_protocol_widget_signal_data.html" target="_self">_RemminaProtocolWidgetSignalData</a></td><td class="desc"></td></tr>
+<tr id="row_66_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_scrolled_viewport.html" target="_self">_RemminaScrolledViewport</a></td><td class="desc"></td></tr>
+<tr id="row_67_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_scrolled_viewport_class.html" target="_self">_RemminaScrolledViewportClass</a></td><td class="desc"></td></tr>
+<tr id="row_68_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_secret_plugin.html" target="_self">_RemminaSecretPlugin</a></td><td class="desc"></td></tr>
+<tr id="row_69_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p.html" target="_self">_RemminaSFTP</a></td><td class="desc"></td></tr>
+<tr id="row_70_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p_client.html" target="_self">_RemminaSFTPClient</a></td><td class="desc"></td></tr>
+<tr id="row_71_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_f_t_p_client_class.html" target="_self">_RemminaSFTPClientClass</a></td><td class="desc"></td></tr>
+<tr id="row_72_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h.html" target="_self">_RemminaSSH</a></td><td class="desc"></td></tr>
+<tr id="row_73_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_ssh_search.html" target="_self">_RemminaSshSearch</a></td><td class="desc">The SSH plugin implementation </td></tr>
+<tr id="row_74_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h_shell.html" target="_self">_RemminaSSHShell</a></td><td class="desc"></td></tr>
+<tr id="row_75_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_s_s_h_tunnel.html" target="_self">_RemminaSSHTunnel</a></td><td class="desc"></td></tr>
+<tr id="row_76_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_string_list.html" target="_self">_RemminaStringList</a></td><td class="desc"></td></tr>
+<tr id="row_77_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_string_list_priv.html" target="_self">_RemminaStringListPriv</a></td><td class="desc"></td></tr>
+<tr id="row_78_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tool_plugin.html" target="_self">_RemminaToolPlugin</a></td><td class="desc"></td></tr>
+<tr id="row_79_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_channel_handler.html" target="_self">_RemminaTpChannelHandler</a></td><td class="desc"></td></tr>
+<tr id="row_80_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_handler.html" target="_self">_RemminaTpHandler</a></td><td class="desc"></td></tr>
+<tr id="row_81_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_tp_handler_class.html" target="_self">_RemminaTpHandlerClass</a></td><td class="desc"></td></tr>
+<tr id="row_82_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___remmina_unlock_dialog.html" target="_self">_RemminaUnlockDialog</a></td><td class="desc"></td></tr>
+<tr id="row_83_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct___x2_go_custom_user_data.html" target="_self">_X2GoCustomUserData</a></td><td class="desc">Can be used to pass custom user data between functions and threads </td></tr>
+<tr id="row_84_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structdistro__info.html" target="_self">distro_info</a></td><td class="desc"></td></tr>
+<tr id="row_85_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structitem.html" target="_self">item</a></td><td class="desc"></td></tr>
+<tr id="row_86_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlsb__distro__info.html" target="_self">lsb_distro_info</a></td><td class="desc"></td></tr>
+<tr id="row_87_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structmpchanger__params.html" target="_self">mpchanger_params</a></td><td class="desc"></td></tr>
+<tr id="row_88_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_mp_run_info.html" target="_self">MpRunInfo</a></td><td class="desc"></td></tr>
+<tr id="row_89_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structon_main_thread__cb__data.html" target="_self">onMainThread_cb_data</a></td><td class="desc"></td></tr>
+<tr id="row_90_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_p_con___spinner.html" target="_self">PCon_Spinner</a></td><td class="desc"></td></tr>
+<tr id="row_91_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_profiles_data.html" target="_self">ProfilesData</a></td><td class="desc"></td></tr>
+<tr id="row_92_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_boxed.html" target="_self">PyGBoxed</a></td><td class="desc"></td></tr>
+<tr id="row_93_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_generic.html" target="_self">PyGeneric</a></td><td class="desc">A struct used to communicate data between Python and C without strict data type </td></tr>
+<tr id="row_94_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_object.html" target="_self">PyGObject</a></td><td class="desc"></td></tr>
+<tr id="row_95_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_param_spec.html" target="_self">PyGParamSpec</a></td><td class="desc"></td></tr>
+<tr id="row_96_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_g_pointer.html" target="_self">PyGPointer</a></td><td class="desc"></td></tr>
+<tr id="row_97_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_plugin.html" target="_self">PyPlugin</a></td><td class="desc">Maps an instance of a Python plugin to a Remmina one </td></tr>
+<tr id="row_98_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_file.html" target="_self">PyRemminaFile</a></td><td class="desc">Wrapper for a Python object that contains a pointer to an instance of RemminaFile </td></tr>
+<tr id="row_99_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_plugin_screenshot_data.html" target="_self">PyRemminaPluginScreenshotData</a></td><td class="desc"></td></tr>
+<tr id="row_100_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_feature.html" target="_self">PyRemminaProtocolFeature</a></td><td class="desc">Wrapper for a Python object that contains a pointer to an instance of RemminaProtocolFeature </td></tr>
+<tr id="row_101_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_setting.html" target="_self">PyRemminaProtocolSetting</a></td><td class="desc">Adapter struct to handle Remmina protocol settings </td></tr>
+<tr id="row_102_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_py_remmina_protocol_widget.html" target="_self">PyRemminaProtocolWidget</a></td><td class="desc">The Python abstraction of the protocol widget struct </td></tr>
+<tr id="row_103_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structregion.html" target="_self">region</a></td><td class="desc"></td></tr>
+<tr id="row_104_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__masterthread__exec__data.html" target="_self">remmina_masterthread_exec_data</a></td><td class="desc"></td></tr>
+<tr id="row_105_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__event.html" target="_self">remmina_plugin_rdp_event</a></td><td class="desc"></td></tr>
+<tr id="row_106_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__keymap__entry.html" target="_self">remmina_plugin_rdp_keymap_entry</a></td><td class="desc"></td></tr>
+<tr id="row_107_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__plugin__rdp__ui__object.html" target="_self">remmina_plugin_rdp_ui_object</a></td><td class="desc"></td></tr>
+<tr id="row_108_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html" target="_self">remmina_protocol_widget_dialog_mt_data_t</a></td><td class="desc"></td></tr>
+<tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_remmina_message_panel_private.html" target="_self">RemminaMessagePanelPrivate</a></td><td class="desc"></td></tr>
+<tr id="row_110_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_remmina_plugin_loader.html" target="_self">RemminaPluginLoader</a></td><td class="desc"></td></tr>
+<tr id="row_111_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__bitmap.html" target="_self">rf_bitmap</a></td><td class="desc"></td></tr>
+<tr id="row_112_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__clipboard.html" target="_self">rf_clipboard</a></td><td class="desc"></td></tr>
+<tr id="row_113_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__context.html" target="_self">rf_context</a></td><td class="desc"></td></tr>
+<tr id="row_114_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__glyph.html" target="_self">rf_glyph</a></td><td class="desc"></td></tr>
+<tr id="row_115_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrf__pointer.html" target="_self">rf_pointer</a></td><td class="desc"></td></tr>
+<tr id="row_116_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrs_sched_data.html" target="_self">rsSchedData</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/public/annotated_dup.js b/public/annotated_dup.js
index 196307814..029f0ae35 100644
--- a/public/annotated_dup.js
+++ b/public/annotated_dup.js
@@ -37,7 +37,6 @@ var annotated_dup =
[ "_RemminaMain", "struct___remmina_main.html", "struct___remmina_main" ],
[ "_RemminaMainPriv", "struct___remmina_main_priv.html", "struct___remmina_main_priv" ],
[ "_RemminaMonitor", "struct___remmina_monitor.html", "struct___remmina_monitor" ],
- [ "_RemminaNewsDialog", "struct___remmina_news_dialog.html", "struct___remmina_news_dialog" ],
[ "_RemminaPasswdDialog", "struct___remmina_passwd_dialog.html", "struct___remmina_passwd_dialog" ],
[ "_RemminaPlugin", "struct___remmina_plugin.html", "struct___remmina_plugin" ],
[ "_RemminaPluginExecData", "struct___remmina_plugin_exec_data.html", "struct___remmina_plugin_exec_data" ],
diff --git a/public/classes.html b/public/classes.html
index 51fa280bd..b6e9fe5a3 100644
--- a/public/classes.html
+++ b/public/classes.html
@@ -89,40 +89,40 @@ $(document).ready(function(){initNavTree('classes.html','');});
<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_o">o</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a></div>
<table class="classindex">
<tr><td rowspan="2" valign="bottom"><a name="letter__"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;_&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="struct___remmina_f_t_p_client_class.html">_RemminaFTPClientClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_event.html">_RemminaPluginVncEvent</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tool_plugin.html">_RemminaToolPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_generic.html">PyGeneric</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_task.html">_RemminaFTPTask</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_w_w_w_data.html">_RemminaPluginWWWData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_channel_handler.html">_RemminaTpChannelHandler</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_object.html">PyGObject</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___connection_data.html">_ConnectionData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_group_data.html">_RemminaGroupData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_handler.html">_RemminaTpHandler</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_param_spec.html">PyGParamSpec</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___dialog_data.html">_DialogData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_icon.html">_RemminaIcon</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref.html">_RemminaPref</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_handler_class.html">_RemminaTpHandlerClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_pointer.html">PyGPointer</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___g_vnc_plugin_data.html">_GVncPluginData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_key_chooser_arguments.html">_RemminaKeyChooserArguments</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_unlock_dialog.html">_RemminaUnlockDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_plugin.html">PyPlugin</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___py_g_closure.html">_PyGClosure</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_key_val.html">_RemminaKeyVal</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_file.html">PyRemminaFile</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___py_g_object___functions.html">_PyGObject_Functions</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_plugin.html">_RemminaPrefPlugin</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="struct___remmina_f_t_p_client_class.html">_RemminaFTPClientClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_w_w_w_data.html">_RemminaPluginWWWData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_channel_handler.html">_RemminaTpChannelHandler</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_object.html">PyGObject</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_task.html">_RemminaFTPTask</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_handler.html">_RemminaTpHandler</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_param_spec.html">PyGParamSpec</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___connection_data.html">_ConnectionData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_group_data.html">_RemminaGroupData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref.html">_RemminaPref</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tp_handler_class.html">_RemminaTpHandlerClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_pointer.html">PyGPointer</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___dialog_data.html">_DialogData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_icon.html">_RemminaIcon</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_unlock_dialog.html">_RemminaUnlockDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_plugin.html">PyPlugin</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___g_vnc_plugin_data.html">_GVncPluginData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_key_chooser_arguments.html">_RemminaKeyChooserArguments</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_file.html">PyRemminaFile</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___py_g_closure.html">_PyGClosure</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_key_val.html">_RemminaKeyVal</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_pref_plugin.html">_RemminaPrefPlugin</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_d"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;d&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="struct_py_remmina_plugin_screenshot_data.html">PyRemminaPluginScreenshotData</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_log_window.html">_RemminaLogWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_protocol_feature.html">PyRemminaProtocolFeature</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_class.html">_RemminaAppletMenuClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_log_window_class.html">_RemminaLogWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structdistro__info.html">distro_info</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_protocol_setting.html">PyRemminaProtocolSetting</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item.html">_RemminaAppletMenuItem</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_main.html">_RemminaMain</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___py_g_object___functions.html">_PyGObject_Functions</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_feature.html">_RemminaProtocolFeature</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_protocol_feature.html">PyRemminaProtocolFeature</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_log_window.html">_RemminaLogWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_plugin.html">_RemminaProtocolPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structdistro__info.html">distro_info</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_remmina_protocol_setting.html">PyRemminaProtocolSetting</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_class.html">_RemminaAppletMenuClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_log_window_class.html">_RemminaLogWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="struct_py_remmina_protocol_widget.html">PyRemminaProtocolWidget</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item_class.html">_RemminaAppletMenuItemClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_main_priv.html">_RemminaMainPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_setting_opt.html">_RemminaProtocolSettingOpt</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item.html">_RemminaAppletMenuItem</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_main.html">_RemminaMain</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_setting_opt.html">_RemminaProtocolSettingOpt</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_avahi.html">_RemminaAvahi</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_monitor.html">_RemminaMonitor</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structitem.html">item</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_avahi_priv.html">_RemminaAvahiPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_news_dialog.html">_RemminaNewsDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___remmina_applet_menu_item_class.html">_RemminaAppletMenuItemClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_main_priv.html">_RemminaMainPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget.html">_RemminaProtocolWidget</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structitem.html">item</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_avahi.html">_RemminaAvahi</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_monitor.html">_RemminaMonitor</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_class.html">_RemminaProtocolWidgetClass</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structregion.html">region</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf.html">_RemminaCellRendererPixbuf</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_passwd_dialog.html">_RemminaPasswdDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf_class.html">_RemminaCellRendererPixbufClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin.html">_RemminaPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlsb__distro__info.html">lsb_distro_info</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__plugin__rdp__event.html">remmina_plugin_rdp_event</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_chat_window.html">_RemminaChatWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_exec_data.html">_RemminaPluginExecData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport.html">_RemminaScrolledViewport</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___remmina_avahi_priv.html">_RemminaAvahiPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_passwd_dialog.html">_RemminaPasswdDialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__masterthread__exec__data.html">remmina_masterthread_exec_data</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf.html">_RemminaCellRendererPixbuf</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin.html">_RemminaPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlsb__distro__info.html">lsb_distro_info</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__plugin__rdp__event.html">remmina_plugin_rdp_event</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_cell_renderer_pixbuf_class.html">_RemminaCellRendererPixbufClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_exec_data.html">_RemminaPluginExecData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport.html">_RemminaScrolledViewport</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structremmina__plugin__rdp__keymap__entry.html">remmina_plugin_rdp_keymap_entry</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_chat_window_class.html">_RemminaChatWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid.html">_RemminaPluginRdpsetGrid</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport_class.html">_RemminaScrolledViewportClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__plugin__rdp__ui__object.html">remmina_plugin_rdp_ui_object</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_color_pref.html">_RemminaColorPref</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html">_RemminaPluginRdpsetGridClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmpchanger__params.html">mpchanger_params</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_connection_object.html">_RemminaConnectionObject</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_mp_run_info.html">MpRunInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_remmina_message_panel_private.html">RemminaMessagePanelPrivate</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_service.html">_RemminaPluginService</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client.html">_RemminaSFTPClient</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;o&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___remmina_chat_window.html">_RemminaChatWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid.html">_RemminaPluginRdpsetGrid</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_scrolled_viewport_class.html">_RemminaScrolledViewportClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__plugin__rdp__ui__object.html">remmina_plugin_rdp_ui_object</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_chat_window_class.html">_RemminaChatWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_rdpset_grid_class.html">_RemminaPluginRdpsetGridClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_secret_plugin.html">_RemminaSecretPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structmpchanger__params.html">mpchanger_params</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_color_pref.html">_RemminaColorPref</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_screenshot_data.html">_RemminaPluginScreenshotData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p.html">_RemminaSFTP</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_mp_run_info.html">MpRunInfo</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_remmina_message_panel_private.html">RemminaMessagePanelPrivate</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_connection_object.html">_RemminaConnectionObject</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_service.html">_RemminaPluginService</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client.html">_RemminaSFTPClient</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_o"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;o&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="struct_remmina_plugin_loader.html">RemminaPluginLoader</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_connection_window_class.html">_RemminaConnectionWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_sftp_data.html">_RemminaPluginSftpData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client_class.html">_RemminaSFTPClientClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__bitmap.html">rf_bitmap</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_entry_plugin.html">_RemminaEntryPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_data.html">_RemminaPluginSpiceData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h.html">_RemminaSSH</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__clipboard.html">rf_clipboard</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_file.html">_RemminaFile</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html">_RemminaPluginSpiceXferWidgets</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_ssh_search.html">_RemminaSshSearch</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;p&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="struct___remmina_connection_window.html">_RemminaConnectionWindow</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_sftp_data.html">_RemminaPluginSftpData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_f_t_p_client_class.html">_RemminaSFTPClientClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__bitmap.html">rf_bitmap</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_connection_window_class.html">_RemminaConnectionWindowClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_data.html">_RemminaPluginSpiceData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h.html">_RemminaSSH</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__clipboard.html">rf_clipboard</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_entry_plugin.html">_RemminaEntryPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_spice_xfer_widgets.html">_RemminaPluginSpiceXferWidgets</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_ssh_search.html">_RemminaSshSearch</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;p&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structrf__context.html">rf_context</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_file_editor.html">_RemminaFileEditor</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_ssh_data.html">_RemminaPluginSshData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__glyph.html">rf_glyph</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_file_editor_class.html">_RemminaFileEditorClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_coordinates.html">_RemminaPluginVncCoordinates</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_p_con___spinner.html">PCon_Spinner</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__pointer.html">rf_pointer</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html">_RemminaPluginVncCuttextParam</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_string_list.html">_RemminaStringList</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_profiles_data.html">ProfilesData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrs_sched_data.html">rsSchedData</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_client.html">_RemminaFTPClient</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_data.html">_RemminaPluginVncData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_string_list_priv.html">_RemminaStringListPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_boxed.html">PyGBoxed</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_file.html">_RemminaFile</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_ssh_data.html">_RemminaPluginSshData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h_shell.html">_RemminaSSHShell</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__glyph.html">rf_glyph</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_file_editor.html">_RemminaFileEditor</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_coordinates.html">_RemminaPluginVncCoordinates</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_p_con___spinner.html">PCon_Spinner</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrf__pointer.html">rf_pointer</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_file_editor_class.html">_RemminaFileEditorClass</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_cuttext_param.html">_RemminaPluginVncCuttextParam</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_string_list.html">_RemminaStringList</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_profiles_data.html">ProfilesData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrs_sched_data.html">rsSchedData</a>&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_file_plugin.html">_RemminaFilePlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_data.html">_RemminaPluginVncData</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_string_list_priv.html">_RemminaStringListPriv</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_g_boxed.html">PyGBoxed</a>&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="struct___remmina_f_t_p_client.html">_RemminaFTPClient</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_plugin_vnc_event.html">_RemminaPluginVncEvent</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct___remmina_tool_plugin.html">_RemminaToolPlugin</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="struct_py_generic.html">PyGeneric</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter__">_</a>&#160;|&#160;<a class="qindex" href="#letter_d">d</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_o">o</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_r">r</a></div>
diff --git a/public/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/public/dir_68267d1309a1af8e8297ef4c3efbcdba.html
index 7d355d564..c66e6e762 100644
--- a/public/dir_68267d1309a1af8e8297ef4c3efbcdba.html
+++ b/public/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -281,10 +281,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:remmina__widget__pool_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__widget__pool_8h.html">remmina_widget_pool.h</a> <a href="remmina__widget__pool_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:rmnews_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rmnews_8c.html">rmnews.c</a> <a href="rmnews_8c_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:rmnews_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rmnews_8h.html">rmnews.h</a> <a href="rmnews_8h_source.html">[code]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/public/files.html b/public/files.html
index 5c188817f..c60d445d3 100644
--- a/public/files.html
+++ b/public/files.html
@@ -241,30 +241,28 @@ $(document).ready(function(){initNavTree('files.html','');});
<tr id="row_150_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="remmina__utils_8h_source.html"><span class="icondoc"></span></a><a class="el" href="remmina__utils_8h.html" target="_self">remmina_utils.h</a></td><td class="desc">General utility functions, non-GTK related </td></tr>
<tr id="row_151_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="remmina__widget__pool_8c_source.html"><span class="icondoc"></span></a><a class="el" href="remmina__widget__pool_8c.html" target="_self">remmina_widget_pool.c</a></td><td class="desc"></td></tr>
<tr id="row_152_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="remmina__widget__pool_8h_source.html"><span class="icondoc"></span></a><a class="el" href="remmina__widget__pool_8h.html" target="_self">remmina_widget_pool.h</a></td><td class="desc"></td></tr>
-<tr id="row_153_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="rmnews_8c_source.html"><span class="icondoc"></span></a><a class="el" href="rmnews_8c.html" target="_self">rmnews.c</a></td><td class="desc"></td></tr>
-<tr id="row_154_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="rmnews_8h_source.html"><span class="icondoc"></span></a><a class="el" href="rmnews_8h.html" target="_self">rmnews.h</a></td><td class="desc"></td></tr>
-<tr id="row_155_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin_8c.html" target="_self">spice_plugin.c</a></td><td class="desc"></td></tr>
-<tr id="row_156_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin_8h.html" target="_self">spice_plugin.h</a></td><td class="desc"></td></tr>
-<tr id="row_157_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin__file__transfer_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin__file__transfer_8c.html" target="_self">spice_plugin_file_transfer.c</a></td><td class="desc"></td></tr>
-<tr id="row_158_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin__usb_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin__usb_8c.html" target="_self">spice_plugin_usb.c</a></td><td class="desc"></td></tr>
-<tr id="row_159_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__channel__handler_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__channel__handler_8c.html" target="_self">telepathy_channel_handler.c</a></td><td class="desc"></td></tr>
-<tr id="row_160_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__channel__handler_8h_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__channel__handler_8h.html" target="_self">telepathy_channel_handler.h</a></td><td class="desc"></td></tr>
-<tr id="row_161_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__handler_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__handler_8c.html" target="_self">telepathy_handler.c</a></td><td class="desc"></td></tr>
-<tr id="row_162_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__handler_8h_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__handler_8h.html" target="_self">telepathy_handler.h</a></td><td class="desc"></td></tr>
-<tr id="row_163_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__plugin_8c.html" target="_self">telepathy_plugin.c</a></td><td class="desc"></td></tr>
-<tr id="row_164_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="travis-build_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="travis-build_8sh.html" target="_self">travis-build.sh</a></td><td class="desc"></td></tr>
-<tr id="row_165_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="types_8h_source.html"><span class="icondoc"></span></a><a class="el" href="types_8h.html" target="_self">types.h</a></td><td class="desc"></td></tr>
-<tr id="row_166_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="ubuntu-build_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="ubuntu-build_8sh.html" target="_self">ubuntu-build.sh</a></td><td class="desc"></td></tr>
-<tr id="row_167_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="update-translations_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="update-translations_8sh.html" target="_self">update-translations.sh</a></td><td class="desc"></td></tr>
-<tr id="row_168_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="vnc__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="vnc__plugin_8c.html" target="_self">vnc_plugin.c</a></td><td class="desc"></td></tr>
-<tr id="row_169_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="vnc__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="vnc__plugin_8h.html" target="_self">vnc_plugin.h</a></td><td class="desc"></td></tr>
-<tr id="row_170_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__config_8h.html" target="_self">www_config.h</a></td><td class="desc"></td></tr>
-<tr id="row_171_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="www__plugin_8c.html" target="_self">www_plugin.c</a></td><td class="desc"></td></tr>
-<tr id="row_172_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__plugin_8h.html" target="_self">www_plugin.h</a></td><td class="desc"></td></tr>
-<tr id="row_173_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__utils_8c_source.html"><span class="icondoc"></span></a><a class="el" href="www__utils_8c.html" target="_self">www_utils.c</a></td><td class="desc"></td></tr>
-<tr id="row_174_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__utils_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__utils_8h.html" target="_self">www_utils.h</a></td><td class="desc"></td></tr>
-<tr id="row_175_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="x2go__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="x2go__plugin_8c.html" target="_self">x2go_plugin.c</a></td><td class="desc"></td></tr>
-<tr id="row_176_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="x2go__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="x2go__plugin_8h.html" target="_self">x2go_plugin.h</a></td><td class="desc"></td></tr>
+<tr id="row_153_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin_8c.html" target="_self">spice_plugin.c</a></td><td class="desc"></td></tr>
+<tr id="row_154_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin_8h.html" target="_self">spice_plugin.h</a></td><td class="desc"></td></tr>
+<tr id="row_155_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin__file__transfer_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin__file__transfer_8c.html" target="_self">spice_plugin_file_transfer.c</a></td><td class="desc"></td></tr>
+<tr id="row_156_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="spice__plugin__usb_8c_source.html"><span class="icondoc"></span></a><a class="el" href="spice__plugin__usb_8c.html" target="_self">spice_plugin_usb.c</a></td><td class="desc"></td></tr>
+<tr id="row_157_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__channel__handler_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__channel__handler_8c.html" target="_self">telepathy_channel_handler.c</a></td><td class="desc"></td></tr>
+<tr id="row_158_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__channel__handler_8h_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__channel__handler_8h.html" target="_self">telepathy_channel_handler.h</a></td><td class="desc"></td></tr>
+<tr id="row_159_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__handler_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__handler_8c.html" target="_self">telepathy_handler.c</a></td><td class="desc"></td></tr>
+<tr id="row_160_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__handler_8h_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__handler_8h.html" target="_self">telepathy_handler.h</a></td><td class="desc"></td></tr>
+<tr id="row_161_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="telepathy__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="telepathy__plugin_8c.html" target="_self">telepathy_plugin.c</a></td><td class="desc"></td></tr>
+<tr id="row_162_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="travis-build_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="travis-build_8sh.html" target="_self">travis-build.sh</a></td><td class="desc"></td></tr>
+<tr id="row_163_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="types_8h_source.html"><span class="icondoc"></span></a><a class="el" href="types_8h.html" target="_self">types.h</a></td><td class="desc"></td></tr>
+<tr id="row_164_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="ubuntu-build_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="ubuntu-build_8sh.html" target="_self">ubuntu-build.sh</a></td><td class="desc"></td></tr>
+<tr id="row_165_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="update-translations_8sh_source.html"><span class="icondoc"></span></a><a class="el" href="update-translations_8sh.html" target="_self">update-translations.sh</a></td><td class="desc"></td></tr>
+<tr id="row_166_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="vnc__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="vnc__plugin_8c.html" target="_self">vnc_plugin.c</a></td><td class="desc"></td></tr>
+<tr id="row_167_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="vnc__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="vnc__plugin_8h.html" target="_self">vnc_plugin.h</a></td><td class="desc"></td></tr>
+<tr id="row_168_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__config_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__config_8h.html" target="_self">www_config.h</a></td><td class="desc"></td></tr>
+<tr id="row_169_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="www__plugin_8c.html" target="_self">www_plugin.c</a></td><td class="desc"></td></tr>
+<tr id="row_170_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__plugin_8h.html" target="_self">www_plugin.h</a></td><td class="desc"></td></tr>
+<tr id="row_171_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__utils_8c_source.html"><span class="icondoc"></span></a><a class="el" href="www__utils_8c.html" target="_self">www_utils.c</a></td><td class="desc"></td></tr>
+<tr id="row_172_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="www__utils_8h_source.html"><span class="icondoc"></span></a><a class="el" href="www__utils_8h.html" target="_self">www_utils.h</a></td><td class="desc"></td></tr>
+<tr id="row_173_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="x2go__plugin_8c_source.html"><span class="icondoc"></span></a><a class="el" href="x2go__plugin_8c.html" target="_self">x2go_plugin.c</a></td><td class="desc"></td></tr>
+<tr id="row_174_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="x2go__plugin_8h_source.html"><span class="icondoc"></span></a><a class="el" href="x2go__plugin_8h.html" target="_self">x2go_plugin.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/public/files.js b/public/files.js
index 2734b0b19..305593b80 100644
--- a/public/files.js
+++ b/public/files.js
@@ -153,8 +153,6 @@ var files =
[ "remmina_utils.h", "remmina__utils_8h.html", "remmina__utils_8h" ],
[ "remmina_widget_pool.c", "remmina__widget__pool_8c.html", "remmina__widget__pool_8c" ],
[ "remmina_widget_pool.h", "remmina__widget__pool_8h.html", "remmina__widget__pool_8h" ],
- [ "rmnews.c", "rmnews_8c.html", "rmnews_8c" ],
- [ "rmnews.h", "rmnews_8h.html", "rmnews_8h" ],
[ "spice_plugin.c", "spice__plugin_8c.html", "spice__plugin_8c" ],
[ "spice_plugin.h", "spice__plugin_8h.html", "spice__plugin_8h" ],
[ "spice_plugin_file_transfer.c", "spice__plugin__file__transfer_8c.html", "spice__plugin__file__transfer_8c" ],
diff --git a/public/functions_b.html b/public/functions_b.html
index bf6b3ce65..2ec79a8c6 100644
--- a/public/functions_b.html
+++ b/public/functions_b.html
@@ -140,7 +140,6 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
</li>
<li>builder
: <a class="el" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">_RemminaMain</a>
-, <a class="el" href="struct___remmina_news_dialog.html#a04d61af97919ea321ca384711edd2015">_RemminaNewsDialog</a>
, <a class="el" href="struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285">_RemminaPasswdDialog</a>
, <a class="el" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">_RemminaPrefDialog</a>
, <a class="el" href="struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5">_RemminaSshSearch</a>
diff --git a/public/functions_d.html b/public/functions_d.html
index 0745c700d..4e24e6b2d 100644
--- a/public/functions_d.html
+++ b/public/functions_d.html
@@ -194,7 +194,6 @@ $(document).ready(function(){initNavTree('functions_d.html','');});
</li>
<li>dialog
: <a class="el" href="struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872">_RemminaFileEditor</a>
-, <a class="el" href="struct___remmina_news_dialog.html#a652393d5775f6abb7a3b97e1d250797f">_RemminaNewsDialog</a>
, <a class="el" href="struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0">_RemminaPasswdDialog</a>
, <a class="el" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">_RemminaPrefDialog</a>
, <a class="el" href="struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558">_RemminaStringList</a>
diff --git a/public/functions_p.html b/public/functions_p.html
index 5fc0ea514..1c98f8069 100644
--- a/public/functions_p.html
+++ b/public/functions_p.html
@@ -148,18 +148,6 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
<li>pdatestr
: <a class="el" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">ProfilesData</a>
</li>
-<li>periodic_news_permitted
-: <a class="el" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_get_count
-: <a class="el" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_last_get
-: <a class="el" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_uuid_prefix
-: <a class="el" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">_RemminaPref</a>
-</li>
<li>pflags
: <a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">remmina_protocol_widget_dialog_mt_data_t</a>
</li>
diff --git a/public/functions_r.html b/public/functions_r.html
index 5b6da57aa..6b987cd61 100644
--- a/public/functions_r.html
+++ b/public/functions_r.html
@@ -222,9 +222,8 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
: <a class="el" href="structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24">remmina_plugin_rdp_ui_object</a>
</li>
<li>retval
-: <a class="el" href="struct___remmina_news_dialog.html#aa44d2c89a170a509ebb082082efac813">_RemminaNewsDialog</a>
-, <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
-, <a class="el" href="structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c">remmina_masterthread_exec_data</a>
+: <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
+, <a class="el" href="structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07">remmina_masterthread_exec_data</a>
, <a class="el" href="structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee">remmina_plugin_rdp_ui_object</a>
</li>
<li>reveal_button
@@ -242,24 +241,6 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
<li>rgb_buffer
: <a class="el" href="struct___remmina_plugin_vnc_data.html#a5412ada4c656d0053f0656bed890c030">_RemminaPluginVncData</a>
</li>
-<li>rmnews_button_close
-: <a class="el" href="struct___remmina_news_dialog.html#a24dd17da12072e324ce165a9873d59ad">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_defaultcl_button
-: <a class="el" href="struct___remmina_news_dialog.html#a5f1f924669db7285fac6087e08d6ce19">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_defaultcl_label
-: <a class="el" href="struct___remmina_news_dialog.html#a041c5c6f7776a3cdfd1fbcc700dfc749">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_label
-: <a class="el" href="struct___remmina_news_dialog.html#ae4b71b4e789e65063db67f51ce4feb26">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_news_switch
-: <a class="el" href="struct___remmina_news_dialog.html#a14ee9c2823a4519ed84705fd0fe49ec8">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_text_view
-: <a class="el" href="struct___remmina_news_dialog.html#a94584de47018f068c242e5f527e3b84f">_RemminaNewsDialog</a>
-</li>
<li>rowref
: <a class="el" href="struct___remmina_f_t_p_task.html#a0e2d8b5a795eff39aaa5678ee371cea8">_RemminaFTPTask</a>
</li>
diff --git a/public/functions_s.html b/public/functions_s.html
index 399b50afe..ee8889b6e 100644
--- a/public/functions_s.html
+++ b/public/functions_s.html
@@ -454,9 +454,6 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
<li>switch_options_remember_last_view_mode
: <a class="el" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">_RemminaPrefDialog</a>
</li>
-<li>switch_permit_news
-: <a class="el" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">_RemminaPrefDialog</a>
-</li>
<li>switch_security_audit
: <a class="el" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">_RemminaPrefDialog</a>
</li>
diff --git a/public/functions_vars_b.html b/public/functions_vars_b.html
index 910cd2a94..f46f8cb11 100644
--- a/public/functions_vars_b.html
+++ b/public/functions_vars_b.html
@@ -140,7 +140,6 @@ $(document).ready(function(){initNavTree('functions_vars_b.html','');});
</li>
<li>builder
: <a class="el" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">_RemminaMain</a>
-, <a class="el" href="struct___remmina_news_dialog.html#a04d61af97919ea321ca384711edd2015">_RemminaNewsDialog</a>
, <a class="el" href="struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285">_RemminaPasswdDialog</a>
, <a class="el" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">_RemminaPrefDialog</a>
, <a class="el" href="struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5">_RemminaSshSearch</a>
diff --git a/public/functions_vars_d.html b/public/functions_vars_d.html
index 85944b203..7202ebf59 100644
--- a/public/functions_vars_d.html
+++ b/public/functions_vars_d.html
@@ -191,7 +191,6 @@ $(document).ready(function(){initNavTree('functions_vars_d.html','');});
</li>
<li>dialog
: <a class="el" href="struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872">_RemminaFileEditor</a>
-, <a class="el" href="struct___remmina_news_dialog.html#a652393d5775f6abb7a3b97e1d250797f">_RemminaNewsDialog</a>
, <a class="el" href="struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0">_RemminaPasswdDialog</a>
, <a class="el" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">_RemminaPrefDialog</a>
, <a class="el" href="struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558">_RemminaStringList</a>
diff --git a/public/functions_vars_p.html b/public/functions_vars_p.html
index 35c30d95a..d7d94e52e 100644
--- a/public/functions_vars_p.html
+++ b/public/functions_vars_p.html
@@ -148,18 +148,6 @@ $(document).ready(function(){initNavTree('functions_vars_p.html','');});
<li>pdatestr
: <a class="el" href="struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4">ProfilesData</a>
</li>
-<li>periodic_news_permitted
-: <a class="el" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_get_count
-: <a class="el" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_last_get
-: <a class="el" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">_RemminaPref</a>
-</li>
-<li>periodic_rmnews_uuid_prefix
-: <a class="el" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">_RemminaPref</a>
-</li>
<li>pflags
: <a class="el" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">remmina_protocol_widget_dialog_mt_data_t</a>
</li>
diff --git a/public/functions_vars_r.html b/public/functions_vars_r.html
index 4383efcf5..f27b53dac 100644
--- a/public/functions_vars_r.html
+++ b/public/functions_vars_r.html
@@ -213,9 +213,8 @@ $(document).ready(function(){initNavTree('functions_vars_r.html','');});
: <a class="el" href="structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24">remmina_plugin_rdp_ui_object</a>
</li>
<li>retval
-: <a class="el" href="struct___remmina_news_dialog.html#aa44d2c89a170a509ebb082082efac813">_RemminaNewsDialog</a>
-, <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
-, <a class="el" href="structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c">remmina_masterthread_exec_data</a>
+: <a class="el" href="struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235">_RemminaUnlockDialog</a>
+, <a class="el" href="structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07">remmina_masterthread_exec_data</a>
, <a class="el" href="structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee">remmina_plugin_rdp_ui_object</a>
</li>
<li>reveal_button
@@ -233,24 +232,6 @@ $(document).ready(function(){initNavTree('functions_vars_r.html','');});
<li>rgb_buffer
: <a class="el" href="struct___remmina_plugin_vnc_data.html#a5412ada4c656d0053f0656bed890c030">_RemminaPluginVncData</a>
</li>
-<li>rmnews_button_close
-: <a class="el" href="struct___remmina_news_dialog.html#a24dd17da12072e324ce165a9873d59ad">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_defaultcl_button
-: <a class="el" href="struct___remmina_news_dialog.html#a5f1f924669db7285fac6087e08d6ce19">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_defaultcl_label
-: <a class="el" href="struct___remmina_news_dialog.html#a041c5c6f7776a3cdfd1fbcc700dfc749">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_label
-: <a class="el" href="struct___remmina_news_dialog.html#ae4b71b4e789e65063db67f51ce4feb26">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_news_switch
-: <a class="el" href="struct___remmina_news_dialog.html#a14ee9c2823a4519ed84705fd0fe49ec8">_RemminaNewsDialog</a>
-</li>
-<li>rmnews_text_view
-: <a class="el" href="struct___remmina_news_dialog.html#a94584de47018f068c242e5f527e3b84f">_RemminaNewsDialog</a>
-</li>
<li>rowref
: <a class="el" href="struct___remmina_f_t_p_task.html#a0e2d8b5a795eff39aaa5678ee371cea8">_RemminaFTPTask</a>
</li>
diff --git a/public/functions_vars_s.html b/public/functions_vars_s.html
index d046fee06..f340ed446 100644
--- a/public/functions_vars_s.html
+++ b/public/functions_vars_s.html
@@ -445,9 +445,6 @@ $(document).ready(function(){initNavTree('functions_vars_s.html','');});
<li>switch_options_remember_last_view_mode
: <a class="el" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">_RemminaPrefDialog</a>
</li>
-<li>switch_permit_news
-: <a class="el" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">_RemminaPrefDialog</a>
-</li>
<li>switch_security_audit
: <a class="el" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">_RemminaPrefDialog</a>
</li>
diff --git a/public/globals_d.html b/public/globals_d.html
index e8b2be619..c1d6e4a5b 100644
--- a/public/globals_d.html
+++ b/public/globals_d.html
@@ -116,17 +116,13 @@ $(document).ready(function(){initNavTree('globals_d.html','');});
<li>disablegstvideooverlay_tooltip
: <a class="el" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59">spice_plugin.c</a>
</li>
-<li>disablenews
-: <a class="el" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">remmina.c</a>
-, <a class="el" href="rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b">rmnews.h</a>
-</li>
<li>disabletoolbar
-: <a class="el" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina_pref.h</a>
-, <a class="el" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina.c</a>
+: <a class="el" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina.c</a>
+, <a class="el" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina_pref.h</a>
</li>
<li>disabletrayicon
-: <a class="el" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">remmina.c</a>
-, <a class="el" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">remmina_pref.h</a>
+: <a class="el" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">remmina_pref.h</a>
+, <a class="el" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">remmina.c</a>
</li>
<li>distroArray
: <a class="el" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478">remmina_utils.c</a>
diff --git a/public/globals_e.html b/public/globals_e.html
index fd09e3790..d6dbf4ce8 100644
--- a/public/globals_e.html
+++ b/public/globals_e.html
@@ -97,9 +97,6 @@ $(document).ready(function(){initNavTree('globals_e.html','');});
<li>events
: <a class="el" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">remmina_ssh.c</a>
</li>
-<li>eweekdays
-: <a class="el" href="rmnews_8c.html#af4777302c760225b833206545e9f437d">rmnews.c</a>
-</li>
<li>extrahardening
: <a class="el" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">remmina.c</a>
, <a class="el" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">remmina_pref.h</a>
diff --git a/public/globals_func_r.html b/public/globals_func_r.html
index ee5b63eb6..19f718e05 100644
--- a/public/globals_func_r.html
+++ b/public/globals_func_r.html
@@ -1172,10 +1172,6 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__ftp__client_8c.html#a659de1105971e3fda3d44d089277d6a7">remmina_ftp_client.c</a>
, <a class="el" href="remmina__ftp__client_8h.html#a659de1105971e3fda3d44d089277d6a7">remmina_ftp_client.h</a>
</li>
-<li>remmina_gen_random_uuid()
-: <a class="el" href="remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e">remmina_utils.h</a>
-</li>
<li>remmina_get_rdp_kbd_remap()
: <a class="el" href="rdp__plugin_8c.html#ae0449ecd9477c0361ae0d3ca928d8017">rdp_plugin.c</a>
</li>
@@ -1394,21 +1390,17 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main.h</a>
</li>
<li>remmina_main_on_action_application_dark_theme()
-: <a class="el" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main.h</a>
-, <a class="el" href="remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main.c</a>
+: <a class="el" href="remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main.c</a>
+, <a class="el" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main.h</a>
</li>
<li>remmina_main_on_action_application_default()
-: <a class="el" href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main.c</a>
-, <a class="el" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main.h</a>
+: <a class="el" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main.h</a>
+, <a class="el" href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main.c</a>
</li>
<li>remmina_main_on_action_application_mpchange()
: <a class="el" href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main.c</a>
, <a class="el" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main.h</a>
</li>
-<li>remmina_main_on_action_application_news()
-: <a class="el" href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main.c</a>
-, <a class="el" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main.h</a>
-</li>
<li>remmina_main_on_action_application_plugins()
: <a class="el" href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main.c</a>
, <a class="el" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main.h</a>
@@ -2200,8 +2192,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea">www_plugin.c</a>
</li>
<li>remmina_plugin_www_decide_nav()
-: <a class="el" href="www__plugin_8h.html#ad7744b6ffed0a7250dad8d73a1bbdb32">www_plugin.h</a>
-, <a class="el" href="www__plugin_8c.html#a18fa028449a5d5d455ce6cde7bfd2ef2">www_plugin.c</a>
+: <a class="el" href="www__plugin_8c.html#a18fa028449a5d5d455ce6cde7bfd2ef2">www_plugin.c</a>
+, <a class="el" href="www__plugin_8h.html#ad7744b6ffed0a7250dad8d73a1bbdb32">www_plugin.h</a>
</li>
<li>remmina_plugin_www_decide_newwin()
: <a class="el" href="www__plugin_8c.html#a05218b821edab542795439a87ad9d909">www_plugin.c</a>
@@ -2230,8 +2222,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="www__plugin_8c.html#abc7a556e81fb1152b1e9bc68406b983f">www_plugin.c</a>
</li>
<li>remmina_plugin_www_notify_download()
-: <a class="el" href="www__plugin_8c.html#ae91c9382d5bb29416eab7de18c6d6b8d">www_plugin.c</a>
-, <a class="el" href="www__plugin_8h.html#ae91c9382d5bb29416eab7de18c6d6b8d">www_plugin.h</a>
+: <a class="el" href="www__plugin_8h.html#ae91c9382d5bb29416eab7de18c6d6b8d">www_plugin.h</a>
+, <a class="el" href="www__plugin_8c.html#ae91c9382d5bb29416eab7de18c6d6b8d">www_plugin.c</a>
</li>
<li>remmina_plugin_www_on_auth()
: <a class="el" href="www__plugin_8c.html#ae9973fcef32044b1238648c4695c3f23">www_plugin.c</a>
@@ -2278,8 +2270,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458">remmina_pref_dialog.h</a>
</li>
<li>remmina_pref_dialog_on_action_close()
-: <a class="el" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog.h</a>
-, <a class="el" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog.c</a>
+: <a class="el" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog.c</a>
+, <a class="el" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog.h</a>
</li>
<li>remmina_pref_dialog_on_close_clicked()
: <a class="el" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69">remmina_pref_dialog.c</a>
@@ -2344,16 +2336,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref.h</a>
</li>
<li>remmina_pref_get_ssh_tcp_keepintvl()
-: <a class="el" href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref.c</a>
-, <a class="el" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref.h</a>
+: <a class="el" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref.h</a>
+, <a class="el" href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref.c</a>
</li>
<li>remmina_pref_get_ssh_tcp_usrtimeout()
: <a class="el" href="remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref.c</a>
, <a class="el" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref.h</a>
</li>
<li>remmina_pref_get_sshtunnel_port()
-: <a class="el" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref.h</a>
</li>
<li>remmina_pref_get_sshtunnel_port_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#aa3f81ddb59721fc45ae6752a357d2490">python_wrapper_remmina.c</a>
@@ -2388,8 +2380,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref.h</a>
</li>
<li>remmina_pref_keymap_groups()
-: <a class="el" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#a745bbef1d48a7462f8db997821742395">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#a745bbef1d48a7462f8db997821742395">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395">remmina_pref.h</a>
</li>
<li>remmina_pref_on_button_keystrokes_clicked()
: <a class="el" href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131">remmina_pref_dialog.c</a>
@@ -2602,16 +2594,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_grab_focus()
-: <a class="el" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_gtkviewport()
: <a class="el" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_has_error()
-: <a class="el" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_init()
: <a class="el" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget.c</a>
@@ -2636,8 +2628,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_mpprogress()
-: <a class="el" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_new()
: <a class="el" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget.c</a>
@@ -2739,16 +2731,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_set_current_scale_mode()
-: <a class="el" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_set_display()
: <a class="el" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_set_error()
-: <a class="el" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_set_expand()
: <a class="el" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget.c</a>
@@ -2771,16 +2763,16 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_signal_connection_closed()
-: <a class="el" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_signal_connection_opened()
: <a class="el" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_ssh_exec()
-: <a class="el" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_start_direct_tunnel()
: <a class="el" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget.c</a>
@@ -2802,8 +2794,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_unmap_event()
-: <a class="el" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_update_align()
: <a class="el" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget.c</a>
@@ -2813,8 +2805,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rcw_8c.html#ab7dc553cbd2005feb77163cf79f48f6d">rcw.c</a>
</li>
<li>remmina_protocol_widget_update_remote_resolution()
-: <a class="el" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_xport_tunnel_connect_callback()
: <a class="el" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget.c</a>
@@ -2830,8 +2822,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__public_8h.html#a86940733e5b9cf77b276084e437dcac0">remmina_public.h</a>
</li>
<li>remmina_public_combo_get_active_text()
-: <a class="el" href="remmina__public_8c.html#af1679d83834c8409f23e00c555d677fb">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#af1679d83834c8409f23e00c555d677fb">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#af1679d83834c8409f23e00c555d677fb">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#af1679d83834c8409f23e00c555d677fb">remmina_public.c</a>
</li>
<li>remmina_public_create_combo()
: <a class="el" href="remmina__public_8c.html#ab4a593956dfe89aba3242a5c264a681f">remmina_public.c</a>
@@ -2842,59 +2834,59 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__public_8h.html#ab28356392468fbd147814f09cda6e168">remmina_public.h</a>
</li>
<li>remmina_public_create_combo_map()
-: <a class="el" href="remmina__public_8h.html#a616258d3226ec1f1ecee6ce18aba535b">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#a616258d3226ec1f1ecee6ce18aba535b">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#a616258d3226ec1f1ecee6ce18aba535b">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#a616258d3226ec1f1ecee6ce18aba535b">remmina_public.h</a>
</li>
<li>remmina_public_create_combo_mapint()
-: <a class="el" href="remmina__public_8c.html#ad1feef5a6d19225b8fcbfd0f9555306b">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#ad1feef5a6d19225b8fcbfd0f9555306b">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#ad1feef5a6d19225b8fcbfd0f9555306b">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#ad1feef5a6d19225b8fcbfd0f9555306b">remmina_public.c</a>
</li>
<li>remmina_public_create_combo_text_d()
-: <a class="el" href="remmina__public_8h.html#a3796b536244067e9a85923b1cefa6cde">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#a3796b536244067e9a85923b1cefa6cde">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#a3796b536244067e9a85923b1cefa6cde">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#a3796b536244067e9a85923b1cefa6cde">remmina_public.h</a>
</li>
<li>remmina_public_create_group()
-: <a class="el" href="remmina__public_8h.html#af9c70a727bfeb32730b98ce5cf7a3739">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#af9c70a727bfeb32730b98ce5cf7a3739">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#af9c70a727bfeb32730b98ce5cf7a3739">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#af9c70a727bfeb32730b98ce5cf7a3739">remmina_public.h</a>
</li>
<li>remmina_public_get_keycode_for_keyval()
-: <a class="el" href="remmina__public_8h.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public.h</a>
</li>
<li>remmina_public_get_modifier_for_keycode()
-: <a class="el" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#a1fac51670815da6a72700a10866c179a">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#a1fac51670815da6a72700a10866c179a">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public.c</a>
</li>
<li>remmina_public_get_server_port()
: <a class="el" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public.c</a>
, <a class="el" href="remmina__public_8h.html#adc8b77823386e00e610527d6b0b61149">remmina_public.h</a>
</li>
<li>remmina_public_get_server_port_old()
-: <a class="el" href="remmina__public_8c.html#ad7fe0e4dc091d9227b9610517cf61667">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#ad7fe0e4dc091d9227b9610517cf61667">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#ad7fe0e4dc091d9227b9610517cf61667">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#ad7fe0e4dc091d9227b9610517cf61667">remmina_public.c</a>
</li>
<li>remmina_public_get_server_port_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#a7055f797416a2fd833c882c24e6e88a6">python_wrapper_remmina.c</a>
</li>
<li>remmina_public_get_xauth_cookie()
-: <a class="el" href="remmina__public_8c.html#a12ba081432e5f32cf8287231d4779ecf">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#a12ba081432e5f32cf8287231d4779ecf">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#a12ba081432e5f32cf8287231d4779ecf">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#a12ba081432e5f32cf8287231d4779ecf">remmina_public.c</a>
</li>
<li>remmina_public_gtk_builder_new_from_file()
: <a class="el" href="remmina__public_8h.html#a3031598a6e4f67d1519d8e5afba7da41">remmina_public.h</a>
, <a class="el" href="remmina__public_8c.html#a3031598a6e4f67d1519d8e5afba7da41">remmina_public.c</a>
</li>
<li>remmina_public_gtk_builder_new_from_resource()
-: <a class="el" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public.c</a>
</li>
<li>remmina_public_gtk_widget_reparent()
-: <a class="el" href="remmina__public_8c.html#ac0f480277a5929212d389b4bcdd56912">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#ac0f480277a5929212d389b4bcdd56912">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#ac0f480277a5929212d389b4bcdd56912">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#ac0f480277a5929212d389b4bcdd56912">remmina_public.c</a>
</li>
<li>remmina_public_load_combo_text_d()
-: <a class="el" href="remmina__public_8c.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.c</a>
</li>
<li>remmina_public_open_unix_sock()
: <a class="el" href="remmina__public_8h.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public.h</a>
@@ -2909,24 +2901,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public.c</a>
</li>
<li>remmina_public_resolution_validation_func()
-: <a class="el" href="remmina__public_8h.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public.h</a>
</li>
<li>remmina_public_send_notification()
: <a class="el" href="remmina__public_8h.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public.h</a>
, <a class="el" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public.c</a>
</li>
<li>remmina_public_split_resolution_string()
-: <a class="el" href="remmina__public_8h.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#aaf3fdb980c24cd06965b85ebcdd79173">remmina_public.h</a>
</li>
<li>remmina_public_str_replace()
: <a class="el" href="remmina__public_8h.html#aea7547abe3a67e6126addc9ed91af640">remmina_public.h</a>
, <a class="el" href="remmina__public_8c.html#aea7547abe3a67e6126addc9ed91af640">remmina_public.c</a>
</li>
<li>remmina_public_str_replace_in_place()
-: <a class="el" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.c</a>
</li>
<li>remmina_rdp_authenticate()
: <a class="el" href="rdp__plugin_8c.html#af33e88ae9c13745eb6d36f36418e3676">rdp_plugin.c</a>
@@ -3075,8 +3067,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__event_8c.html#ad8f0d0f1b1b75646523f3b241f124e56">rdp_event.c</a>
</li>
<li>remmina_rdp_event_on_map()
-: <a class="el" href="rdp__event_8h.html#a09271b787fc086f05a8a6e7c3282d6aa">rdp_event.h</a>
-, <a class="el" href="rdp__event_8c.html#a09271b787fc086f05a8a6e7c3282d6aa">rdp_event.c</a>
+: <a class="el" href="rdp__event_8c.html#a09271b787fc086f05a8a6e7c3282d6aa">rdp_event.c</a>
+, <a class="el" href="rdp__event_8h.html#a09271b787fc086f05a8a6e7c3282d6aa">rdp_event.h</a>
</li>
<li>remmina_rdp_event_on_motion()
: <a class="el" href="rdp__event_8c.html#ac27328f2796bd021d174c0f4b172c024">rdp_event.c</a>
@@ -3085,8 +3077,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__event_8c.html#a9d63c3ac635001e62851ec4bc5fb7469">rdp_event.c</a>
</li>
<li>remmina_rdp_event_on_unmap()
-: <a class="el" href="rdp__event_8h.html#a393d4ec6673f6a9c2b71849c109facef">rdp_event.h</a>
-, <a class="el" href="rdp__event_8c.html#a393d4ec6673f6a9c2b71849c109facef">rdp_event.c</a>
+: <a class="el" href="rdp__event_8c.html#a393d4ec6673f6a9c2b71849c109facef">rdp_event.c</a>
+, <a class="el" href="rdp__event_8h.html#a393d4ec6673f6a9c2b71849c109facef">rdp_event.h</a>
</li>
<li>remmina_rdp_event_process_clipboard()
: <a class="el" href="rdp__cliprdr_8h.html#ad4fad618198e7746ea1e4ebd01a9b173">rdp_cliprdr.h</a>
@@ -3105,8 +3097,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__event_8c.html#a2b91746b782b7782432bd1d23c6a9945">rdp_event.c</a>
</li>
<li>remmina_rdp_event_queue_ui_async()
-: <a class="el" href="rdp__event_8h.html#ae445fd0a84c7c9414a177a69c86cf325">rdp_event.h</a>
-, <a class="el" href="rdp__event_8c.html#ae445fd0a84c7c9414a177a69c86cf325">rdp_event.c</a>
+: <a class="el" href="rdp__event_8c.html#ae445fd0a84c7c9414a177a69c86cf325">rdp_event.c</a>
+, <a class="el" href="rdp__event_8h.html#ae445fd0a84c7c9414a177a69c86cf325">rdp_event.h</a>
</li>
<li>remmina_rdp_event_queue_ui_sync_retint()
: <a class="el" href="rdp__event_8h.html#ab5fe43c1b1b77c39f118d2581942eb81">rdp_event.h</a>
@@ -3171,8 +3163,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__file_8c.html#af8f66ae61f0a025b3f69cd8e08d2c229">rdp_file.c</a>
</li>
<li>remmina_rdp_file_export_test()
-: <a class="el" href="rdp__file_8c.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.c</a>
-, <a class="el" href="rdp__file_8h.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.h</a>
+: <a class="el" href="rdp__file_8h.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.h</a>
+, <a class="el" href="rdp__file_8c.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.c</a>
</li>
<li>remmina_rdp_file_import()
: <a class="el" href="rdp__file_8h.html#a992b5a31dfa961cb3244cb3e2084c4cf">rdp_file.h</a>
@@ -3255,8 +3247,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__settings_8c.html#ab69390b3995c4b4fed872d5bb363d9d5">rdp_settings.c</a>
</li>
<li>remmina_rdp_settings_get_keyboard_layout()
-: <a class="el" href="rdp__settings_8c.html#a4052ab6359b14e8f9a4cf76bed4da90c">rdp_settings.c</a>
-, <a class="el" href="rdp__settings_8h.html#a4052ab6359b14e8f9a4cf76bed4da90c">rdp_settings.h</a>
+: <a class="el" href="rdp__settings_8h.html#a4052ab6359b14e8f9a4cf76bed4da90c">rdp_settings.h</a>
+, <a class="el" href="rdp__settings_8c.html#a4052ab6359b14e8f9a4cf76bed4da90c">rdp_settings.c</a>
</li>
<li>remmina_rdp_settings_get_orientation_scale_prefs()
: <a class="el" href="rdp__settings_8h.html#a5f05047cf10611ffb7a23a248650cb4c">rdp_settings.h</a>
@@ -3334,8 +3326,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__scheduler_8c.html#abdee2f0b202662d50de1f6e5835f81f1">remmina_scheduler.c</a>
</li>
<li>remmina_scheduler_setup()
-: <a class="el" href="remmina__scheduler_8c.html#a8ee49eb86004b98070d1514c2612251a">remmina_scheduler.c</a>
-, <a class="el" href="remmina__scheduler_8h.html#a5d69b073538851d85534b3090cf75da6">remmina_scheduler.h</a>
+: <a class="el" href="remmina__scheduler_8h.html#a5d69b073538851d85534b3090cf75da6">remmina_scheduler.h</a>
+, <a class="el" href="remmina__scheduler_8c.html#a8ee49eb86004b98070d1514c2612251a">remmina_scheduler.c</a>
</li>
<li>remmina_scrolled_viewport_class_init()
: <a class="el" href="remmina__scrolled__viewport_8c.html#a9efdaaa5d040cbad9f03bd2100caf011">remmina_scrolled_viewport.c</a>
@@ -3362,8 +3354,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__scrolled__viewport_8c.html#ab6821a1bbe2dbd787512236a68493b4f">remmina_scrolled_viewport.c</a>
</li>
<li>remmina_scrolled_viewport_new()
-: <a class="el" href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.c</a>
-, <a class="el" href="remmina__scrolled__viewport_8h.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.h</a>
+: <a class="el" href="remmina__scrolled__viewport_8h.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.h</a>
+, <a class="el" href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.c</a>
</li>
<li>remmina_scrolled_viewport_remove_motion()
: <a class="el" href="remmina__scrolled__viewport_8h.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport.h</a>
@@ -3414,8 +3406,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__sftp__client_8c.html#a476effba1e0cf529dab3f75a501341ea">remmina_sftp_client.c</a>
</li>
<li>remmina_sftp_client_open()
-: <a class="el" href="remmina__sftp__client_8h.html#a9fb6d25e4676b2fa574f958a5ba271a1">remmina_sftp_client.h</a>
-, <a class="el" href="remmina__sftp__client_8c.html#a9fb6d25e4676b2fa574f958a5ba271a1">remmina_sftp_client.c</a>
+: <a class="el" href="remmina__sftp__client_8c.html#a9fb6d25e4676b2fa574f958a5ba271a1">remmina_sftp_client.c</a>
+, <a class="el" href="remmina__sftp__client_8h.html#a9fb6d25e4676b2fa574f958a5ba271a1">remmina_sftp_client.h</a>
</li>
<li>remmina_sftp_client_refresh()
: <a class="el" href="remmina__sftp__client_8c.html#ae87948f1c87c6eb6b16664665cac9a2c">remmina_sftp_client.c</a>
@@ -3481,20 +3473,20 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__sodium_8c.html#a17d17beeb57808af1c4299e3b4b94e9a">remmina_sodium.c</a>
</li>
<li>remmina_sodium_pwhash()
-: <a class="el" href="remmina__sodium_8h.html#ae661257deabb27ca05747be21aac253c">remmina_sodium.h</a>
-, <a class="el" href="remmina__sodium_8c.html#ae661257deabb27ca05747be21aac253c">remmina_sodium.c</a>
+: <a class="el" href="remmina__sodium_8c.html#ae661257deabb27ca05747be21aac253c">remmina_sodium.c</a>
+, <a class="el" href="remmina__sodium_8h.html#ae661257deabb27ca05747be21aac253c">remmina_sodium.h</a>
</li>
<li>remmina_sodium_pwhash_str()
-: <a class="el" href="remmina__sodium_8h.html#a42b49fa9a654cb061a02f52577171e1e">remmina_sodium.h</a>
-, <a class="el" href="remmina__sodium_8c.html#a42b49fa9a654cb061a02f52577171e1e">remmina_sodium.c</a>
+: <a class="el" href="remmina__sodium_8c.html#a42b49fa9a654cb061a02f52577171e1e">remmina_sodium.c</a>
+, <a class="el" href="remmina__sodium_8h.html#a42b49fa9a654cb061a02f52577171e1e">remmina_sodium.h</a>
</li>
<li>remmina_sodium_pwhash_str_verify()
: <a class="el" href="remmina__sodium_8c.html#a6df48c8b8aafee07bfe41fb89581aa5f">remmina_sodium.c</a>
, <a class="el" href="remmina__sodium_8h.html#a6df48c8b8aafee07bfe41fb89581aa5f">remmina_sodium.h</a>
</li>
<li>remmina_ssh_auth()
-: <a class="el" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh.h</a>
-, <a class="el" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh.c</a>
+: <a class="el" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh.c</a>
+, <a class="el" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh.h</a>
</li>
<li>remmina_ssh_auth_agent()
: <a class="el" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796">remmina_ssh.c</a>
@@ -3542,15 +3534,15 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh.c</a>
</li>
<li>remmina_ssh_find_identity()
-: <a class="el" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh.h</a>
-, <a class="el" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh.c</a>
+: <a class="el" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh.c</a>
+, <a class="el" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh.h</a>
</li>
<li>remmina_ssh_free()
: <a class="el" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh.h</a>
</li>
<li>remmina_ssh_identity_path()
-: <a class="el" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh.c</a>
-, <a class="el" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh.h</a>
+: <a class="el" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh.h</a>
+, <a class="el" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh.c</a>
</li>
<li>remmina_ssh_init_from_file()
: <a class="el" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh.h</a>
@@ -3572,8 +3564,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__ssh__plugin_8c.html#a3e8e08f2a9b05530e85962f9b8c556e9">remmina_ssh_plugin.c</a>
</li>
<li>remmina_ssh_plugin_register()
-: <a class="el" href="remmina__ssh__plugin_8h.html#af9f9487a10fb1a9c4b494ce3657359b9">remmina_ssh_plugin.h</a>
-, <a class="el" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin.c</a>
+: <a class="el" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin.c</a>
+, <a class="el" href="remmina__ssh__plugin_8h.html#af9f9487a10fb1a9c4b494ce3657359b9">remmina_ssh_plugin.h</a>
</li>
<li>remmina_ssh_search_item()
: <a class="el" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh.c</a>
@@ -3583,8 +3575,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh.c</a>
</li>
<li>remmina_ssh_set_error()
-: <a class="el" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh.c</a>
-, <a class="el" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh.h</a>
+: <a class="el" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh.h</a>
+, <a class="el" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh.c</a>
</li>
<li>remmina_ssh_set_nodelay()
: <a class="el" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh.c</a>
@@ -3641,8 +3633,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh.c</a>
</li>
<li>remmina_stats_get_all()
-: <a class="el" href="remmina__stats_8h.html#a7a1c9ab1abc1fdf78239d11b802843ae">remmina_stats.h</a>
-, <a class="el" href="remmina__stats_8c.html#a7398b36347e3621772776c466b565641">remmina_stats.c</a>
+: <a class="el" href="remmina__stats_8c.html#a7398b36347e3621772776c466b565641">remmina_stats.c</a>
+, <a class="el" href="remmina__stats_8h.html#a7a1c9ab1abc1fdf78239d11b802843ae">remmina_stats.h</a>
</li>
<li>remmina_stats_get_gtk_backend()
: <a class="el" href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c">remmina_stats.c</a>
@@ -3705,24 +3697,24 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__string__array_8c.html#a462a635b3a55cc0e3af087ff996fba9a">remmina_string_array.c</a>
</li>
<li>remmina_string_array_new_from_string()
-: <a class="el" href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.c</a>
-, <a class="el" href="remmina__string__array_8h.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.h</a>
+: <a class="el" href="remmina__string__array_8h.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.h</a>
+, <a class="el" href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.c</a>
</li>
<li>remmina_string_array_remove()
-: <a class="el" href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.c</a>
-, <a class="el" href="remmina__string__array_8h.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.h</a>
+: <a class="el" href="remmina__string__array_8h.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.h</a>
+, <a class="el" href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.c</a>
</li>
<li>remmina_string_array_remove_index()
-: <a class="el" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.c</a>
-, <a class="el" href="remmina__string__array_8h.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.h</a>
+: <a class="el" href="remmina__string__array_8h.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.h</a>
+, <a class="el" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.c</a>
</li>
<li>remmina_string_array_sort()
: <a class="el" href="remmina__string__array_8h.html#a3eab4bae72ff130ad10ec8fc7364ce70">remmina_string_array.h</a>
, <a class="el" href="remmina__string__array_8c.html#a3eab4bae72ff130ad10ec8fc7364ce70">remmina_string_array.c</a>
</li>
<li>remmina_string_array_to_string()
-: <a class="el" href="remmina__string__array_8h.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.h</a>
-, <a class="el" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.c</a>
+: <a class="el" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.c</a>
+, <a class="el" href="remmina__string__array_8h.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.h</a>
</li>
<li>remmina_string_list_get_text()
: <a class="el" href="remmina__string__list_8h.html#a74058eac0af28c05a55d041103457aec">remmina_string_list.h</a>
@@ -3735,8 +3727,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__string__list_8c.html#a5709fae6d1ab7827d9537715791fa819">remmina_string_list.c</a>
</li>
<li>remmina_string_list_new()
-: <a class="el" href="remmina__string__list_8h.html#a26bc63cdb43ed3fda2d86ac1d95a5029">remmina_string_list.h</a>
-, <a class="el" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list.c</a>
+: <a class="el" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list.c</a>
+, <a class="el" href="remmina__string__list_8h.html#a26bc63cdb43ed3fda2d86ac1d95a5029">remmina_string_list.h</a>
</li>
<li>remmina_string_list_on_action_add()
: <a class="el" href="remmina__string__list_8c.html#a4f02ba383d1c5376606dd494771d5a1b">remmina_string_list.c</a>
@@ -3758,8 +3750,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list.c</a>
</li>
<li>remmina_string_list_set_titles()
-: <a class="el" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list.c</a>
-, <a class="el" href="remmina__string__list_8h.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list.h</a>
+: <a class="el" href="remmina__string__list_8h.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list.h</a>
+, <a class="el" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list.c</a>
</li>
<li>remmina_string_list_set_validation_func()
: <a class="el" href="remmina__string__list_8c.html#a500b85eafd23280f998d2980d1eba80e">remmina_string_list.c</a>
@@ -3830,8 +3822,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="telepathy__handler_8c.html#a74b0c331f63ae06d690d26a9ab6aa67c">telepathy_handler.c</a>
</li>
<li>remmina_tp_handler_new()
-: <a class="el" href="telepathy__handler_8h.html#a9a0d7f717ce6b2d808b18d5da290f3d6">telepathy_handler.h</a>
-, <a class="el" href="telepathy__handler_8c.html#a9a0d7f717ce6b2d808b18d5da290f3d6">telepathy_handler.c</a>
+: <a class="el" href="telepathy__handler_8c.html#a9a0d7f717ce6b2d808b18d5da290f3d6">telepathy_handler.c</a>
+, <a class="el" href="telepathy__handler_8h.html#a9a0d7f717ce6b2d808b18d5da290f3d6">telepathy_handler.h</a>
</li>
<li>remmina_tp_handler_register()
: <a class="el" href="telepathy__handler_8c.html#ae71fa1e8591ba79daedb9ad8bc5714c9">telepathy_handler.c</a>
@@ -3856,40 +3848,40 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="remmina__unlock_8c.html#a10e43559c46ea3ba409c0b97a43c93b3">remmina_unlock.c</a>
</li>
<li>remmina_utils_get_etc_release()
-: <a class="el" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.c</a>
</li>
<li>remmina_utils_get_kernel_arch()
-: <a class="el" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.h</a>
</li>
<li>remmina_utils_get_kernel_name()
-: <a class="el" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522">remmina_utils.h</a>
</li>
<li>remmina_utils_get_kernel_release()
-: <a class="el" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lang()
-: <a class="el" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.c</a>
</li>
<li>remmina_utils_get_lsb_codename()
-: <a class="el" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_description()
-: <a class="el" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_id()
-: <a class="el" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_release()
-: <a class="el" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.h</a>
</li>
<li>remmina_utils_get_os_info()
: <a class="el" href="remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils.c</a>
@@ -3903,23 +3895,23 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
, <a class="el" href="remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355">remmina_utils.c</a>
</li>
<li>remmina_utils_string_replace()
-: <a class="el" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.h</a>
</li>
<li>remmina_utils_string_replace_all()
: <a class="el" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils.h</a>
, <a class="el" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils.c</a>
</li>
<li>remmina_utils_string_strip()
-: <a class="el" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.c</a>
</li>
<li>remmina_utils_strpos()
: <a class="el" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils.c</a>
</li>
<li>remmina_widget_pool_count()
-: <a class="el" href="remmina__widget__pool_8h.html#af888e4e0c2d590e61c72608a7482f18a">remmina_widget_pool.h</a>
-, <a class="el" href="remmina__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool.c</a>
+: <a class="el" href="remmina__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool.c</a>
+, <a class="el" href="remmina__widget__pool_8h.html#af888e4e0c2d590e61c72608a7482f18a">remmina_widget_pool.h</a>
</li>
<li>remmina_widget_pool_find()
: <a class="el" href="remmina__widget__pool_8c.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool.c</a>
@@ -4038,8 +4030,8 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
: <a class="el" href="rdp__plugin_8c.html#a8b9e88d2925be5eee2025f4c3ede1e29">rdp_plugin.c</a>
</li>
<li>rf_register_graphics()
-: <a class="el" href="rdp__graphics_8c.html#a95732c40c35499f3440715b6526279b1">rdp_graphics.c</a>
-, <a class="el" href="rdp__graphics_8h.html#a95732c40c35499f3440715b6526279b1">rdp_graphics.h</a>
+: <a class="el" href="rdp__graphics_8h.html#a95732c40c35499f3440715b6526279b1">rdp_graphics.h</a>
+, <a class="el" href="rdp__graphics_8c.html#a95732c40c35499f3440715b6526279b1">rdp_graphics.c</a>
</li>
<li>rf_uninit()
: <a class="el" href="rdp__plugin_8h.html#ab113687b2d454d2ef5865de40a9cabbb">rdp_plugin.h</a>
@@ -4047,48 +4039,6 @@ $(document).ready(function(){initNavTree('globals_func_r.html','');});
<li>rfi_uninit()
: <a class="el" href="rdp__plugin_8c.html#af22c947a2ae21ce29170be003585e06b">rdp_plugin.c</a>
</li>
-<li>rmnews_close_clicked()
-: <a class="el" href="rmnews_8c.html#aaa3ec81813c3b38be1f75885e6005a00">rmnews.c</a>
-</li>
-<li>rmnews_defaultcl_on_click()
-: <a class="el" href="rmnews_8c.html#a7825b2c9facea97439f5780d83e86798">rmnews.c</a>
-</li>
-<li>rmnews_dialog_deleted()
-: <a class="el" href="rmnews_8c.html#adf38ed099d3ac477aea7e3bbd6d95bd4">rmnews.c</a>
-</li>
-<li>rmnews_get_file_contents()
-: <a class="el" href="rmnews_8c.html#a11d7277ba911522ac40656774cbe41b9">rmnews.c</a>
-</li>
-<li>rmnews_get_news()
-: <a class="el" href="rmnews_8c.html#a26cb497eeb30a956dcdc5790b393a301">rmnews.c</a>
-</li>
-<li>rmnews_get_uid()
-: <a class="el" href="rmnews_8c.html#a59416d6e8999802e8b145b0338331081">rmnews.c</a>
-</li>
-<li>rmnews_get_url()
-: <a class="el" href="rmnews_8c.html#a341ebc424e040f8f8a2e5e46b1920c7e">rmnews.c</a>
-, <a class="el" href="rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e">rmnews.h</a>
-</li>
-<li>rmnews_get_url_cb()
-: <a class="el" href="rmnews_8c.html#a9a0c1177e67a08c991e5344196ebac01">rmnews.c</a>
-</li>
-<li>rmnews_news_switch_state_set_cb()
-: <a class="el" href="rmnews_8c.html#a0b8a063b164dbf0798982daa9399a793">rmnews.c</a>
-</li>
-<li>rmnews_on_stream_splice()
-: <a class="el" href="rmnews_8c.html#a78c63694cb6197f185242acac0ea1575">rmnews.c</a>
-</li>
-<li>rmnews_periodic_check()
-: <a class="el" href="rmnews_8c.html#a88b2d9ce9e7bc64373e2eb7f904a0814">rmnews.c</a>
-</li>
-<li>rmnews_schedule()
-: <a class="el" href="rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a">rmnews.c</a>
-, <a class="el" href="rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a">rmnews.h</a>
-</li>
-<li>rmnews_show_news()
-: <a class="el" href="rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe">rmnews.c</a>
-, <a class="el" href="rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af">rmnews.h</a>
-</li>
<li>rmplugin_x2go_ask_session()
: <a class="el" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">x2go_plugin.c</a>
</li>
diff --git a/public/globals_o.html b/public/globals_o.html
index 6a7f38afa..4510961ec 100644
--- a/public/globals_o.html
+++ b/public/globals_o.html
@@ -97,8 +97,8 @@ $(document).ready(function(){initNavTree('globals_o.html','');});
: <a class="el" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">x2go_plugin.c</a>
</li>
<li>onMainThread_schedule_callback_and_wait()
-: <a class="el" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">x2go_plugin.c</a>
-, <a class="el" href="vnc__plugin_8c.html#a390e3b371156197feb518b737a31cc53">vnc_plugin.c</a>
+: <a class="el" href="vnc__plugin_8c.html#a390e3b371156197feb518b737a31cc53">vnc_plugin.c</a>
+, <a class="el" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">x2go_plugin.c</a>
</li>
<li>open_connection_last_stage()
: <a class="el" href="rcw_8c.html#a80f465cb910660ded402fb0e7bb3a7fd">rcw.c</a>
@@ -106,9 +106,6 @@ $(document).ready(function(){initNavTree('globals_o.html','');});
<li>OPEN_DIR_SIGNAL
: <a class="el" href="remmina__ftp__client_8c.html#adc29c2ff13d900c2f185ee95427fb06caab6192f5c24116559ad3f816da0ade64">remmina_ftp_client.c</a>
</li>
-<li>output_file_path
-: <a class="el" href="rmnews_8c.html#a565782499953048b5e51934123195e29">rmnews.c</a>
-</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
diff --git a/public/globals_r.html b/public/globals_r.html
index 389345df1..63156a25f 100644
--- a/public/globals_r.html
+++ b/public/globals_r.html
@@ -1388,10 +1388,6 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>REMMINA_FTP_TASK_TYPE_UPLOAD
: <a class="el" href="remmina__ftp__client_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da3d497be5727d1de77a18ad8b7d24eb24">remmina_ftp_client.h</a>
</li>
-<li>remmina_gen_random_uuid()
-: <a class="el" href="remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e">remmina_utils.h</a>
-</li>
<li>remmina_get_rdp_kbd_remap()
: <a class="el" href="rdp__plugin_8c.html#ae0449ecd9477c0361ae0d3ca928d8017">rdp_plugin.c</a>
</li>
@@ -1426,12 +1422,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__icon_8c.html#ac424cc450aa98c2a0fe2494cddff48a6">remmina_icon.c</a>
</li>
<li>remmina_icon_init()
-: <a class="el" href="remmina__icon_8h.html#a741c81815e562f40672c4485172306d6">remmina_icon.h</a>
-, <a class="el" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon.c</a>
+: <a class="el" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon.c</a>
+, <a class="el" href="remmina__icon_8h.html#a741c81815e562f40672c4485172306d6">remmina_icon.h</a>
</li>
<li>remmina_icon_is_autostart()
-: <a class="el" href="remmina__icon_8c.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon.c</a>
-, <a class="el" href="remmina__icon_8h.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon.h</a>
+: <a class="el" href="remmina__icon_8h.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon.h</a>
+, <a class="el" href="remmina__icon_8c.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon.c</a>
</li>
<li>remmina_icon_is_available()
: <a class="el" href="remmina__icon_8c.html#a42f087b679b43b8a1d36cd9e9781a8b6">remmina_icon.c</a>
@@ -1630,10 +1626,6 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main.c</a>
, <a class="el" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main.h</a>
</li>
-<li>remmina_main_on_action_application_news()
-: <a class="el" href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main.c</a>
-, <a class="el" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main.h</a>
-</li>
<li>remmina_main_on_action_application_plugins()
: <a class="el" href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main.c</a>
, <a class="el" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main.h</a>
@@ -2701,8 +2693,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c">remmina_pref_dialog.h</a>
</li>
<li>remmina_pref_clear_recent()
-: <a class="el" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref.h</a>
</li>
<li>remmina_pref_dialog
: <a class="el" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368">remmina_pref_dialog.c</a>
@@ -2769,15 +2761,15 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref.h</a>
</li>
<li>remmina_pref_get_scale_quality()
-: <a class="el" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref.c</a>
-, <a class="el" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref.h</a>
+: <a class="el" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref.h</a>
+, <a class="el" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref.c</a>
</li>
<li>remmina_pref_get_scale_quality_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#abf39b9982da287d8768a66e472965519">python_wrapper_remmina.c</a>
</li>
<li>remmina_pref_get_ssh_loglevel()
-: <a class="el" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267">remmina_pref.h</a>
</li>
<li>remmina_pref_get_ssh_loglevel_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#ad112bebbdfe15ce6a66b433bd1e7108b">python_wrapper_remmina.c</a>
@@ -2794,8 +2786,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b">remmina_pref.h</a>
</li>
<li>remmina_pref_get_ssh_tcp_keepidle()
-: <a class="el" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref.h</a>
</li>
<li>remmina_pref_get_ssh_tcp_keepintvl()
: <a class="el" href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref.c</a>
@@ -2831,8 +2823,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref.h</a>
</li>
<li>remmina_pref_keymap_get_keyval()
-: <a class="el" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref.h</a>
-, <a class="el" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref.c</a>
+: <a class="el" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref.c</a>
+, <a class="el" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref.h</a>
</li>
<li>remmina_pref_keymap_get_keyval_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#a094b4cbf549e774fc03e988c8fb904e7">python_wrapper_remmina.c</a>
@@ -2861,8 +2853,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a">remmina_pref_dialog.h</a>
</li>
<li>remmina_pref_save()
-: <a class="el" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref.c</a>
-, <a class="el" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref.h</a>
+: <a class="el" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref.h</a>
+, <a class="el" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref.c</a>
</li>
<li>remmina_pref_set_value()
: <a class="el" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref.c</a>
@@ -3001,16 +2993,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="python__wrapper__protocol_8c.html#a4ad3d2c8c8a65d787389b134ab716807">python_wrapper_protocol.c</a>
</li>
<li>remmina_protocol_widget_call_feature_by_ref()
-: <a class="el" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_call_feature_by_type()
: <a class="el" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_chat_close()
-: <a class="el" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_chat_on_destroy()
: <a class="el" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget.c</a>
@@ -3047,8 +3039,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_emit_signal()
-: <a class="el" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_cacert()
: <a class="el" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget.c</a>
@@ -3071,16 +3063,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_domain()
-: <a class="el" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_get_error_message()
: <a class="el" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_expand()
-: <a class="el" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_features()
: <a class="el" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget.c</a>
@@ -3103,16 +3095,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_name()
-: <a class="el" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_get_password()
: <a class="el" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget.c</a>
, <a class="el" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_profile_remote_height()
-: <a class="el" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget.h</a>
-, <a class="el" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget.c</a>
+: <a class="el" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget.c</a>
+, <a class="el" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_get_profile_remote_height_wrapper()
: <a class="el" href="python__wrapper__remmina_8c.html#ad1f61fdcb71c0511a084ee18b5f0e6a8">python_wrapper_remmina.c</a>
@@ -3207,8 +3199,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_panel_changed_certificate()
-: <a class="el" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_panel_destroy()
: <a class="el" href="remmina__protocol__widget_8h.html#a78069d2e4c2773685126fc3127b26dae">remmina_protocol_widget.h</a>
@@ -3341,8 +3333,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget.h</a>
</li>
<li>remmina_protocol_widget_start_xport_tunnel()
-: <a class="el" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget.c</a>
-, <a class="el" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget.h</a>
+: <a class="el" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget.h</a>
+, <a class="el" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget.c</a>
</li>
<li>remmina_protocol_widget_tunnel_destroy()
: <a class="el" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget.c</a>
@@ -3443,16 +3435,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__public_8h.html#ac0f480277a5929212d389b4bcdd56912">remmina_public.h</a>
</li>
<li>remmina_public_load_combo_text_d()
-: <a class="el" href="remmina__public_8c.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#aa5eacff7c9dab7457dd65525d01047f8">remmina_public.c</a>
</li>
<li>remmina_public_open_unix_sock()
: <a class="el" href="remmina__public_8c.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public.c</a>
, <a class="el" href="remmina__public_8h.html#a4b8a7b85d58148cf856ea71b1d9f22c1">remmina_public.h</a>
</li>
<li>remmina_public_open_xdisplay()
-: <a class="el" href="remmina__public_8h.html#a52656bbe00a83068f36337f449bdc767">remmina_public.h</a>
-, <a class="el" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public.c</a>
+: <a class="el" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public.c</a>
+, <a class="el" href="remmina__public_8h.html#a52656bbe00a83068f36337f449bdc767">remmina_public.h</a>
</li>
<li>remmina_public_popup_position()
: <a class="el" href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public.c</a>
@@ -3475,8 +3467,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__public_8h.html#aea7547abe3a67e6126addc9ed91af640">remmina_public.h</a>
</li>
<li>remmina_public_str_replace_in_place()
-: <a class="el" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.c</a>
-, <a class="el" href="remmina__public_8h.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.h</a>
+: <a class="el" href="remmina__public_8h.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.h</a>
+, <a class="el" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public.c</a>
</li>
<li>remmina_python_module_type
: <a class="el" href="python__wrapper__remmina_8c.html#a822ee64f62b7bf7af738dfec34e69737">python_wrapper_remmina.c</a>
@@ -3528,8 +3520,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="rdp__cliprdr_8c.html#a719b6820f66508f8acb943a1bf1a495d">rdp_cliprdr.c</a>
</li>
<li>remmina_rdp_cliprdr_get_client_format_list()
-: <a class="el" href="rdp__cliprdr_8c.html#accb7cad54767b8f658b8ea438690ef4f">rdp_cliprdr.c</a>
-, <a class="el" href="rdp__cliprdr_8h.html#accb7cad54767b8f658b8ea438690ef4f">rdp_cliprdr.h</a>
+: <a class="el" href="rdp__cliprdr_8h.html#accb7cad54767b8f658b8ea438690ef4f">rdp_cliprdr.h</a>
+, <a class="el" href="rdp__cliprdr_8c.html#accb7cad54767b8f658b8ea438690ef4f">rdp_cliprdr.c</a>
</li>
<li>remmina_rdp_cliprdr_get_clipboard_data()
: <a class="el" href="rdp__cliprdr_8c.html#a1875ac25f73dd93e4b716746e7c6b8d5">rdp_cliprdr.c</a>
@@ -3541,8 +3533,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="rdp__cliprdr_8c.html#a5378f6a230a35d2a84e94ee029a10af4">rdp_cliprdr.c</a>
</li>
<li>remmina_rdp_cliprdr_init()
-: <a class="el" href="rdp__cliprdr_8c.html#a2c900a8369c1081e3084f5b17efbe47d">rdp_cliprdr.c</a>
-, <a class="el" href="rdp__cliprdr_8h.html#a2c900a8369c1081e3084f5b17efbe47d">rdp_cliprdr.h</a>
+: <a class="el" href="rdp__cliprdr_8h.html#a2c900a8369c1081e3084f5b17efbe47d">rdp_cliprdr.h</a>
+, <a class="el" href="rdp__cliprdr_8c.html#a2c900a8369c1081e3084f5b17efbe47d">rdp_cliprdr.c</a>
</li>
<li>remmina_rdp_cliprdr_monitor_ready()
: <a class="el" href="rdp__cliprdr_8c.html#aa3ee3696d9fdb72f994184eee168b2ca">rdp_cliprdr.c</a>
@@ -3621,8 +3613,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="rdp__event_8c.html#a40b4fd190055c10d5d2248a6eca5f50f">rdp_event.c</a>
</li>
<li>remmina_rdp_event_init()
-: <a class="el" href="rdp__event_8h.html#afba21c241e7abe9fe72f6e5aeeaa99cc">rdp_event.h</a>
-, <a class="el" href="rdp__event_8c.html#af3a991a02d35fb09c85f2e752a5393ca">rdp_event.c</a>
+: <a class="el" href="rdp__event_8c.html#af3a991a02d35fb09c85f2e752a5393ca">rdp_event.c</a>
+, <a class="el" href="rdp__event_8h.html#afba21c241e7abe9fe72f6e5aeeaa99cc">rdp_event.h</a>
</li>
<li>remmina_rdp_event_init_keymap()
: <a class="el" href="rdp__event_8c.html#a4eeb2bd828f9fae2c549f3ef8a1e20c0">rdp_event.c</a>
@@ -3660,8 +3652,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="rdp__event_8c.html#a393d4ec6673f6a9c2b71849c109facef">rdp_event.c</a>
</li>
<li>remmina_rdp_event_process_clipboard()
-: <a class="el" href="rdp__cliprdr_8c.html#ad4fad618198e7746ea1e4ebd01a9b173">rdp_cliprdr.c</a>
-, <a class="el" href="rdp__cliprdr_8h.html#ad4fad618198e7746ea1e4ebd01a9b173">rdp_cliprdr.h</a>
+: <a class="el" href="rdp__cliprdr_8h.html#ad4fad618198e7746ea1e4ebd01a9b173">rdp_cliprdr.h</a>
+, <a class="el" href="rdp__cliprdr_8c.html#ad4fad618198e7746ea1e4ebd01a9b173">rdp_cliprdr.c</a>
</li>
<li>remmina_rdp_event_process_event()
: <a class="el" href="rdp__event_8c.html#a5f5fcd2a5c81d0c8bec609e0428735c5">rdp_event.c</a>
@@ -3684,8 +3676,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="rdp__event_8h.html#ab5fe43c1b1b77c39f118d2581942eb81">rdp_event.h</a>
</li>
<li>remmina_rdp_event_queue_ui_sync_retptr()
-: <a class="el" href="rdp__event_8h.html#adaaf3de8342309cc52668f318a473350">rdp_event.h</a>
-, <a class="el" href="rdp__event_8c.html#adaaf3de8342309cc52668f318a473350">rdp_event.c</a>
+: <a class="el" href="rdp__event_8c.html#adaaf3de8342309cc52668f318a473350">rdp_event.c</a>
+, <a class="el" href="rdp__event_8h.html#adaaf3de8342309cc52668f318a473350">rdp_event.h</a>
</li>
<li>remmina_rdp_event_reconnect_progress()
: <a class="el" href="rdp__event_8c.html#ab7cbdc2f8cf829e2f09ecfa605a92d65">rdp_event.c</a>
@@ -3742,15 +3734,15 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="rdp__event_8c.html#a65eef99dc99f77be815a5da804ed94fc">rdp_event.c</a>
</li>
<li>remmina_rdp_event_update_rect()
-: <a class="el" href="rdp__event_8c.html#a712a9b04decd8b928d71db44b9b14fc9">rdp_event.c</a>
-, <a class="el" href="rdp__event_8h.html#a712a9b04decd8b928d71db44b9b14fc9">rdp_event.h</a>
+: <a class="el" href="rdp__event_8h.html#a712a9b04decd8b928d71db44b9b14fc9">rdp_event.h</a>
+, <a class="el" href="rdp__event_8c.html#a712a9b04decd8b928d71db44b9b14fc9">rdp_event.c</a>
</li>
<li>remmina_rdp_event_update_regions()
: <a class="el" href="rdp__event_8c.html#a2ff2e46de1ad42c9aa8f792d629e0a89">rdp_event.c</a>
</li>
<li>remmina_rdp_event_update_scale()
-: <a class="el" href="rdp__event_8c.html#a64ce0c66bb4cb6ddaee263ce8563f497">rdp_event.c</a>
-, <a class="el" href="rdp__event_8h.html#a64ce0c66bb4cb6ddaee263ce8563f497">rdp_event.h</a>
+: <a class="el" href="rdp__event_8h.html#a64ce0c66bb4cb6ddaee263ce8563f497">rdp_event.h</a>
+, <a class="el" href="rdp__event_8c.html#a64ce0c66bb4cb6ddaee263ce8563f497">rdp_event.c</a>
</li>
<li>remmina_rdp_event_update_scale_factor()
: <a class="el" href="rdp__event_8c.html#a6076424eb759c91ca9c8da59432c66d6">rdp_event.c</a>
@@ -3766,8 +3758,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="rdp__file_8c.html#af8f66ae61f0a025b3f69cd8e08d2c229">rdp_file.c</a>
</li>
<li>remmina_rdp_file_export_test()
-: <a class="el" href="rdp__file_8h.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.h</a>
-, <a class="el" href="rdp__file_8c.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.c</a>
+: <a class="el" href="rdp__file_8c.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.c</a>
+, <a class="el" href="rdp__file_8h.html#aa3a9bcd9fdbbf8906d74acf57bd5ab90">rdp_file.h</a>
</li>
<li>remmina_rdp_file_import()
: <a class="el" href="rdp__file_8c.html#a992b5a31dfa961cb3244cb3e2084c4cf">rdp_file.c</a>
@@ -3780,8 +3772,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="rdp__file_8c.html#a9f46df2588faa5b2e9fe8590df9d1313">rdp_file.c</a>
</li>
<li>remmina_rdp_file_import_test()
-: <a class="el" href="rdp__file_8c.html#a5465339535714b34c0f60a4ca386e335">rdp_file.c</a>
-, <a class="el" href="rdp__file_8h.html#a4a3163f96d195f97bad0f3c33d8b9bb8">rdp_file.h</a>
+: <a class="el" href="rdp__file_8h.html#a4a3163f96d195f97bad0f3c33d8b9bb8">rdp_file.h</a>
+, <a class="el" href="rdp__file_8c.html#a5465339535714b34c0f60a4ca386e335">rdp_file.c</a>
</li>
<li>remmina_rdp_find_prdriver()
: <a class="el" href="rdp__plugin_8c.html#a32a408f4657dd9778d08923f8942e46a">rdp_plugin.c</a>
@@ -3872,8 +3864,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="rdp__settings_8h.html#a4052ab6359b14e8f9a4cf76bed4da90c">rdp_settings.h</a>
</li>
<li>remmina_rdp_settings_get_orientation_scale_prefs()
-: <a class="el" href="rdp__settings_8h.html#a5f05047cf10611ffb7a23a248650cb4c">rdp_settings.h</a>
-, <a class="el" href="rdp__settings_8c.html#a5f05047cf10611ffb7a23a248650cb4c">rdp_settings.c</a>
+: <a class="el" href="rdp__settings_8c.html#a5f05047cf10611ffb7a23a248650cb4c">rdp_settings.c</a>
+, <a class="el" href="rdp__settings_8h.html#a5f05047cf10611ffb7a23a248650cb4c">rdp_settings.h</a>
</li>
<li>remmina_rdp_settings_grid_destroy()
: <a class="el" href="rdp__settings_8c.html#a407235521d446266678392af62bd05a2">rdp_settings.c</a>
@@ -3940,12 +3932,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>REMMINA_RDP_UI_EVENT
: <a class="el" href="rdp__plugin_8h.html#a1e2313a63a9cfd208ab722cc1e0ee072aa5f6f338ffaa4bed53b225cf54b50000">rdp_plugin.h</a>
</li>
-<li>REMMINA_RDP_UI_EVENT_DESTROY_CAIRO_SURFACE
-: <a class="el" href="rdp__plugin_8h.html#a70cc17b1d3603d036f962a0ae8496b35ad2dd5f6251de0ac7afe2f962c829aa48">rdp_plugin.h</a>
-</li>
<li>remmina_rdp_ui_event_destroy_cairo_surface()
: <a class="el" href="rdp__event_8c.html#acd5f1bd57553006fdbc60d62af433e31">rdp_event.c</a>
</li>
+<li>REMMINA_RDP_UI_EVENT_DESTROY_CAIRO_SURFACE
+: <a class="el" href="rdp__plugin_8h.html#a70cc17b1d3603d036f962a0ae8496b35ad2dd5f6251de0ac7afe2f962c829aa48">rdp_plugin.h</a>
+</li>
<li>REMMINA_RDP_UI_EVENT_UPDATE_SCALE
: <a class="el" href="rdp__plugin_8h.html#a70cc17b1d3603d036f962a0ae8496b35a5bec41fd19576fc5c3e397366461dfe4">rdp_plugin.h</a>
</li>
@@ -4017,12 +4009,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__scrolled__viewport_8c.html#ab6821a1bbe2dbd787512236a68493b4f">remmina_scrolled_viewport.c</a>
</li>
<li>remmina_scrolled_viewport_new()
-: <a class="el" href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.c</a>
-, <a class="el" href="remmina__scrolled__viewport_8h.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.h</a>
+: <a class="el" href="remmina__scrolled__viewport_8h.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.h</a>
+, <a class="el" href="remmina__scrolled__viewport_8c.html#aadfe00c3960eab12d17bdb47495dd1ee">remmina_scrolled_viewport.c</a>
</li>
<li>remmina_scrolled_viewport_remove_motion()
-: <a class="el" href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport.c</a>
-, <a class="el" href="remmina__scrolled__viewport_8h.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport.h</a>
+: <a class="el" href="remmina__scrolled__viewport_8h.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport.h</a>
+, <a class="el" href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport.c</a>
</li>
<li>remmina_search_widget_search_backward()
: <a class="el" href="remmina__ssh__plugin_8c.html#ab1a62e7322f9795828be8261f00a72b9">remmina_ssh_plugin.c</a>
@@ -4046,8 +4038,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__sftp__plugin_8c.html#a999de1dbe291169ccc33dffa123a1315">remmina_sftp_plugin.c</a>
</li>
<li>remmina_sftp_client_confirm_resume()
-: <a class="el" href="remmina__sftp__client_8h.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client.h</a>
-, <a class="el" href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client.c</a>
+: <a class="el" href="remmina__sftp__client_8c.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client.c</a>
+, <a class="el" href="remmina__sftp__client_8h.html#a138904893cb9c7f6535b8dfc7ba17e33">remmina_sftp_client.h</a>
</li>
<li>remmina_sftp_client_destroy()
: <a class="el" href="remmina__sftp__client_8c.html#a396c50263fbc60962481655bdb7b24f2">remmina_sftp_client.c</a>
@@ -4059,8 +4051,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__sftp__client_8c.html#a52b86e14d8abd0a5b6ddeb464a22a5f0">remmina_sftp_client.c</a>
</li>
<li>remmina_sftp_client_new()
-: <a class="el" href="remmina__sftp__client_8c.html#ac2b4d83fed9c42029fee134684601aba">remmina_sftp_client.c</a>
-, <a class="el" href="remmina__sftp__client_8h.html#a0a3d678ad99a04a8b6aa3d958d60dc7d">remmina_sftp_client.h</a>
+: <a class="el" href="remmina__sftp__client_8h.html#a0a3d678ad99a04a8b6aa3d958d60dc7d">remmina_sftp_client.h</a>
+, <a class="el" href="remmina__sftp__client_8c.html#ac2b4d83fed9c42029fee134684601aba">remmina_sftp_client.c</a>
</li>
<li>remmina_sftp_client_on_canceltask()
: <a class="el" href="remmina__sftp__client_8c.html#ad2d75d3cee69addbb691a85ac864db0f">remmina_sftp_client.c</a>
@@ -4134,8 +4126,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__sftp__plugin_8h.html#ac06b00323f7ac1e7faea66d135bffba4">remmina_sftp_plugin.h</a>
</li>
<li>remmina_sha1_file()
-: <a class="el" href="remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8">remmina_utils.c</a>
</li>
<li>remmina_sodium_init()
: <a class="el" href="remmina__sodium_8c.html#a17d17beeb57808af1c4299e3b4b94e9a">remmina_sodium.c</a>
@@ -4266,8 +4258,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__ssh__plugin_8h.html#a3e8e08f2a9b05530e85962f9b8c556e9">remmina_ssh_plugin.h</a>
</li>
<li>remmina_ssh_plugin_register()
-: <a class="el" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin.c</a>
-, <a class="el" href="remmina__ssh__plugin_8h.html#af9f9487a10fb1a9c4b494ce3657359b9">remmina_ssh_plugin.h</a>
+: <a class="el" href="remmina__ssh__plugin_8h.html#af9f9487a10fb1a9c4b494ce3657359b9">remmina_ssh_plugin.h</a>
+, <a class="el" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin.c</a>
</li>
<li>remmina_ssh_search_item()
: <a class="el" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh.c</a>
@@ -4310,27 +4302,27 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>remmina_ssh_tunnel_new_from_file()
: <a class="el" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh.h</a>
</li>
-<li>REMMINA_SSH_TUNNEL_OPEN
-: <a class="el" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">remmina_ssh.h</a>
-</li>
<li>remmina_ssh_tunnel_open()
: <a class="el" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh.h</a>
</li>
-<li>REMMINA_SSH_TUNNEL_REVERSE
-: <a class="el" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">remmina_ssh.h</a>
+<li>REMMINA_SSH_TUNNEL_OPEN
+: <a class="el" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">remmina_ssh.h</a>
</li>
<li>remmina_ssh_tunnel_reverse()
: <a class="el" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh.h</a>
</li>
+<li>REMMINA_SSH_TUNNEL_REVERSE
+: <a class="el" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">remmina_ssh.h</a>
+</li>
<li>remmina_ssh_tunnel_terminated()
: <a class="el" href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh.h</a>
</li>
-<li>remmina_ssh_tunnel_xport()
-: <a class="el" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh.h</a>
-</li>
<li>REMMINA_SSH_TUNNEL_XPORT
: <a class="el" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">remmina_ssh.h</a>
</li>
+<li>remmina_ssh_tunnel_xport()
+: <a class="el" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh.h</a>
+</li>
<li>remmina_ssh_unconvert()
: <a class="el" href="remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea">remmina_ssh.h</a>
</li>
@@ -4344,8 +4336,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh.c</a>
</li>
<li>remmina_stats_get_all()
-: <a class="el" href="remmina__stats_8h.html#a7a1c9ab1abc1fdf78239d11b802843ae">remmina_stats.h</a>
-, <a class="el" href="remmina__stats_8c.html#a7398b36347e3621772776c466b565641">remmina_stats.c</a>
+: <a class="el" href="remmina__stats_8c.html#a7398b36347e3621772776c466b565641">remmina_stats.c</a>
+, <a class="el" href="remmina__stats_8h.html#a7a1c9ab1abc1fdf78239d11b802843ae">remmina_stats.h</a>
</li>
<li>remmina_stats_get_gtk_backend()
: <a class="el" href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c">remmina_stats.c</a>
@@ -4388,8 +4380,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__string__array_8c.html#a404140e205363c778476feb6f320f5f5">remmina_string_array.c</a>
</li>
<li>remmina_string_array_find()
-: <a class="el" href="remmina__string__array_8h.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array.h</a>
-, <a class="el" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array.c</a>
+: <a class="el" href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array.c</a>
+, <a class="el" href="remmina__string__array_8h.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array.h</a>
</li>
<li>remmina_string_array_free()
: <a class="el" href="remmina__string__array_8h.html#a8ab78913d299df665a408a8a5ec51bbe">remmina_string_array.h</a>
@@ -4408,24 +4400,24 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__string__array_8h.html#a462a635b3a55cc0e3af087ff996fba9a">remmina_string_array.h</a>
</li>
<li>remmina_string_array_new_from_string()
-: <a class="el" href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.c</a>
-, <a class="el" href="remmina__string__array_8h.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.h</a>
+: <a class="el" href="remmina__string__array_8h.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.h</a>
+, <a class="el" href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array.c</a>
</li>
<li>remmina_string_array_remove()
: <a class="el" href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.c</a>
, <a class="el" href="remmina__string__array_8h.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array.h</a>
</li>
<li>remmina_string_array_remove_index()
-: <a class="el" href="remmina__string__array_8h.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.h</a>
-, <a class="el" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.c</a>
+: <a class="el" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.c</a>
+, <a class="el" href="remmina__string__array_8h.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array.h</a>
</li>
<li>remmina_string_array_sort()
: <a class="el" href="remmina__string__array_8c.html#a3eab4bae72ff130ad10ec8fc7364ce70">remmina_string_array.c</a>
, <a class="el" href="remmina__string__array_8h.html#a3eab4bae72ff130ad10ec8fc7364ce70">remmina_string_array.h</a>
</li>
<li>remmina_string_array_to_string()
-: <a class="el" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.c</a>
-, <a class="el" href="remmina__string__array_8h.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.h</a>
+: <a class="el" href="remmina__string__array_8h.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.h</a>
+, <a class="el" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array.c</a>
</li>
<li>remmina_string_list_get_text()
: <a class="el" href="remmina__string__list_8c.html#a74058eac0af28c05a55d041103457aec">remmina_string_list.c</a>
@@ -4438,8 +4430,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__string__list_8c.html#a5709fae6d1ab7827d9537715791fa819">remmina_string_list.c</a>
</li>
<li>remmina_string_list_new()
-: <a class="el" href="remmina__string__list_8h.html#a26bc63cdb43ed3fda2d86ac1d95a5029">remmina_string_list.h</a>
-, <a class="el" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list.c</a>
+: <a class="el" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list.c</a>
+, <a class="el" href="remmina__string__list_8h.html#a26bc63cdb43ed3fda2d86ac1d95a5029">remmina_string_list.h</a>
</li>
<li>remmina_string_list_on_action_add()
: <a class="el" href="remmina__string__list_8c.html#a4f02ba383d1c5376606dd494771d5a1b">remmina_string_list.c</a>
@@ -4476,8 +4468,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__sysinfo_8c.html#a79fd36823613c320001f0cdd2a97490f">remmina_sysinfo.c</a>
</li>
<li>remmina_sysinfo_get_wm_name()
-: <a class="el" href="remmina__sysinfo_8c.html#ae4441d62bb4075d1618b5750fea064b4">remmina_sysinfo.c</a>
-, <a class="el" href="remmina__sysinfo_8h.html#a5e08ab3a66f27ada8e700ae42a181b6a">remmina_sysinfo.h</a>
+: <a class="el" href="remmina__sysinfo_8h.html#a5e08ab3a66f27ada8e700ae42a181b6a">remmina_sysinfo.h</a>
+, <a class="el" href="remmina__sysinfo_8c.html#ae4441d62bb4075d1618b5750fea064b4">remmina_sysinfo.c</a>
</li>
<li>remmina_sysinfo_is_appindicator_available()
: <a class="el" href="remmina__sysinfo_8h.html#a9e89ac64e13b47a651554d6a77af6b23">remmina_sysinfo.h</a>
@@ -4601,40 +4593,40 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__unlock_8c.html#a10e43559c46ea3ba409c0b97a43c93b3">remmina_unlock.c</a>
</li>
<li>remmina_utils_get_etc_release()
-: <a class="el" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils.c</a>
</li>
<li>remmina_utils_get_kernel_arch()
-: <a class="el" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils.h</a>
</li>
<li>remmina_utils_get_kernel_name()
: <a class="el" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils.c</a>
, <a class="el" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522">remmina_utils.h</a>
</li>
<li>remmina_utils_get_kernel_release()
-: <a class="el" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lang()
-: <a class="el" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils.c</a>
</li>
<li>remmina_utils_get_lsb_codename()
-: <a class="el" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_description()
-: <a class="el" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_id()
-: <a class="el" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils.h</a>
</li>
<li>remmina_utils_get_lsb_release()
-: <a class="el" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.c</a>
-, <a class="el" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.h</a>
+: <a class="el" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.h</a>
+, <a class="el" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils.c</a>
</li>
<li>remmina_utils_get_os_info()
: <a class="el" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils.h</a>
@@ -4648,16 +4640,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be">remmina_utils.h</a>
</li>
<li>remmina_utils_string_replace()
-: <a class="el" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils.h</a>
</li>
<li>remmina_utils_string_replace_all()
: <a class="el" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils.c</a>
, <a class="el" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils.h</a>
</li>
<li>remmina_utils_string_strip()
-: <a class="el" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.h</a>
-, <a class="el" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.c</a>
+: <a class="el" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.c</a>
+, <a class="el" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils.h</a>
</li>
<li>remmina_utils_strpos()
: <a class="el" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils.c</a>
@@ -4676,16 +4668,16 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
, <a class="el" href="remmina__widget__pool_8h.html#af888e4e0c2d590e61c72608a7482f18a">remmina_widget_pool.h</a>
</li>
<li>remmina_widget_pool_find()
-: <a class="el" href="remmina__widget__pool_8h.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool.h</a>
-, <a class="el" href="remmina__widget__pool_8c.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool.c</a>
+: <a class="el" href="remmina__widget__pool_8c.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool.c</a>
+, <a class="el" href="remmina__widget__pool_8h.html#ab776b24a3b829a1d5dd7974cb8582c05">remmina_widget_pool.h</a>
</li>
<li>remmina_widget_pool_find_by_window()
-: <a class="el" href="remmina__widget__pool_8c.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool.c</a>
-, <a class="el" href="remmina__widget__pool_8h.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool.h</a>
+: <a class="el" href="remmina__widget__pool_8h.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool.h</a>
+, <a class="el" href="remmina__widget__pool_8c.html#a0a6a2069cdbbb920fb09f95bec3e997e">remmina_widget_pool.c</a>
</li>
<li>remmina_widget_pool_foreach()
-: <a class="el" href="remmina__widget__pool_8h.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool.h</a>
-, <a class="el" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool.c</a>
+: <a class="el" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool.c</a>
+, <a class="el" href="remmina__widget__pool_8h.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool.h</a>
</li>
<li>remmina_widget_pool_init()
: <a class="el" href="remmina__widget__pool_8h.html#aadc178f8f991ba939827d235aae8ad09">remmina_widget_pool.h</a>
@@ -4768,8 +4760,8 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
: <a class="el" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5">remmina_exec.h</a>
</li>
<li>RemminaConnectionObject
-: <a class="el" href="rcw_8h.html#a4c54d77416105f6b094796316f5360a2">rcw.h</a>
-, <a class="el" href="rcw_8c.html#a1cc1f656edfbe0d9c5483ac858b76517">rcw.c</a>
+: <a class="el" href="rcw_8c.html#a1cc1f656edfbe0d9c5483ac858b76517">rcw.c</a>
+, <a class="el" href="rcw_8h.html#a4c54d77416105f6b094796316f5360a2">rcw.h</a>
</li>
<li>RemminaConnectionWindow
: <a class="el" href="rcw_8h.html#aed2c8083c39e5e137651f1a7db750fe7">rcw.h</a>
@@ -4840,12 +4832,12 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>RemminaLogWindowClass
: <a class="el" href="remmina__log_8c.html#a5682db89dd84e1c413326e17a4f79dbe">remmina_log.c</a>
</li>
-<li>remminamain
-: <a class="el" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remmina_main.c</a>
-</li>
<li>RemminaMain
: <a class="el" href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">remmina_main.h</a>
</li>
+<li>remminamain
+: <a class="el" href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remmina_main.c</a>
+</li>
<li>RemminaMainPriv
: <a class="el" href="remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052">remmina_main.h</a>
</li>
@@ -4861,9 +4853,6 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>RemminaMTExecData
: <a class="el" href="remmina__masterthread__exec_8h.html#a6ac3d74eb524ac9fb0ff7eef0cb1450e">remmina_masterthread_exec.h</a>
</li>
-<li>RemminaNewsDialog
-: <a class="el" href="rmnews_8h.html#a408794dbcf4d1034bab0bd0e64fa4709">rmnews.h</a>
-</li>
<li>RemminaPasswdDialog
: <a class="el" href="remmina__passwd_8h.html#a0ae512030f8e31cd01d669c1bab0cf19">remmina_passwd.h</a>
</li>
@@ -5232,51 +5221,6 @@ $(document).ready(function(){initNavTree('globals_r.html','');});
<li>rm_plugin_service
: <a class="el" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b">x2go_plugin.c</a>
</li>
-<li>rmnews_close_clicked()
-: <a class="el" href="rmnews_8c.html#aaa3ec81813c3b38be1f75885e6005a00">rmnews.c</a>
-</li>
-<li>rmnews_defaultcl_on_click()
-: <a class="el" href="rmnews_8c.html#a7825b2c9facea97439f5780d83e86798">rmnews.c</a>
-</li>
-<li>rmnews_dialog_deleted()
-: <a class="el" href="rmnews_8c.html#adf38ed099d3ac477aea7e3bbd6d95bd4">rmnews.c</a>
-</li>
-<li>rmnews_get_file_contents()
-: <a class="el" href="rmnews_8c.html#a11d7277ba911522ac40656774cbe41b9">rmnews.c</a>
-</li>
-<li>rmnews_get_news()
-: <a class="el" href="rmnews_8c.html#a26cb497eeb30a956dcdc5790b393a301">rmnews.c</a>
-</li>
-<li>rmnews_get_uid()
-: <a class="el" href="rmnews_8c.html#a59416d6e8999802e8b145b0338331081">rmnews.c</a>
-</li>
-<li>rmnews_get_url()
-: <a class="el" href="rmnews_8c.html#a341ebc424e040f8f8a2e5e46b1920c7e">rmnews.c</a>
-, <a class="el" href="rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e">rmnews.h</a>
-</li>
-<li>rmnews_get_url_cb()
-: <a class="el" href="rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38">rmnews.c</a>
-</li>
-<li>rmnews_news_dialog
-: <a class="el" href="rmnews_8c.html#ae1bb737d0381441eebbf3652b3ef416d">rmnews.c</a>
-</li>
-<li>rmnews_news_switch_state_set_cb()
-: <a class="el" href="rmnews_8c.html#a0b8a063b164dbf0798982daa9399a793">rmnews.c</a>
-</li>
-<li>rmnews_on_stream_splice()
-: <a class="el" href="rmnews_8c.html#a78c63694cb6197f185242acac0ea1575">rmnews.c</a>
-</li>
-<li>rmnews_periodic_check()
-: <a class="el" href="rmnews_8c.html#a88b2d9ce9e7bc64373e2eb7f904a0814">rmnews.c</a>
-</li>
-<li>rmnews_schedule()
-: <a class="el" href="rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a">rmnews.h</a>
-, <a class="el" href="rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a">rmnews.c</a>
-</li>
-<li>rmnews_show_news()
-: <a class="el" href="rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af">rmnews.h</a>
-, <a class="el" href="rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe">rmnews.c</a>
-</li>
<li>rmplugin_x2go
: <a class="el" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68">x2go_plugin.c</a>
</li>
diff --git a/public/globals_s.html b/public/globals_s.html
index cc0946180..93d789411 100644
--- a/public/globals_s.html
+++ b/public/globals_s.html
@@ -100,9 +100,6 @@ $(document).ready(function(){initNavTree('globals_s.html','');});
<li>SERVER_COLUMN
: <a class="el" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">remmina_main.c</a>
</li>
-<li>session
-: <a class="el" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">rmnews.c</a>
-</li>
<li>SESSION_AGENT_PID
: <a class="el" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">x2go_plugin.c</a>
</li>
@@ -234,15 +231,14 @@ $(document).ready(function(){initNavTree('globals_s.html','');});
: <a class="el" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">x2go_plugin.c</a>
</li>
<li>str_replace()
-: <a class="el" href="gvnc__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">gvnc_plugin.c</a>
-, <a class="el" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">spice_plugin.c</a>
+: <a class="el" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">spice_plugin.c</a>
+, <a class="el" href="gvnc__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">gvnc_plugin.c</a>
</li>
<li>string_list
: <a class="el" href="remmina__string__list_8c.html#a6f8601a848bb964c1c9caf69d00128b8">remmina_string_list.c</a>
</li>
<li>supported_mime_types
-: <a class="el" href="rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12">rmnews.c</a>
-, <a class="el" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">remmina_main.c</a>
+: <a class="el" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">remmina_main.c</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/public/globals_type.html b/public/globals_type.html
index 6c12633bc..7f3b46daa 100644
--- a/public/globals_type.html
+++ b/public/globals_type.html
@@ -269,9 +269,6 @@ $(document).ready(function(){initNavTree('globals_type.html','');});
<li>RemminaMTExecData
: <a class="el" href="remmina__masterthread__exec_8h.html#a6ac3d74eb524ac9fb0ff7eef0cb1450e">remmina_masterthread_exec.h</a>
</li>
-<li>RemminaNewsDialog
-: <a class="el" href="rmnews_8h.html#a408794dbcf4d1034bab0bd0e64fa4709">rmnews.h</a>
-</li>
<li>RemminaPasswdDialog
: <a class="el" href="remmina__passwd_8h.html#a0ae512030f8e31cd01d669c1bab0cf19">remmina_passwd.h</a>
</li>
diff --git a/public/globals_vars.js b/public/globals_vars.js
index eddb81cb4..0ddec7a7d 100644
--- a/public/globals_vars.js
+++ b/public/globals_vars.js
@@ -13,7 +13,6 @@ var globals_vars =
[ "l", "globals_vars_l.html", null ],
[ "m", "globals_vars_m.html", null ],
[ "n", "globals_vars_n.html", null ],
- [ "o", "globals_vars_o.html", null ],
[ "p", "globals_vars_p.html", null ],
[ "q", "globals_vars_q.html", null ],
[ "r", "globals_vars_r.html", null ],
diff --git a/public/globals_vars_d.html b/public/globals_vars_d.html
index e199eaaa8..5bf8cd139 100644
--- a/public/globals_vars_d.html
+++ b/public/globals_vars_d.html
@@ -101,13 +101,9 @@ $(document).ready(function(){initNavTree('globals_vars_d.html','');});
<li>disablegstvideooverlay_tooltip
: <a class="el" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59">spice_plugin.c</a>
</li>
-<li>disablenews
-: <a class="el" href="rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b">rmnews.h</a>
-, <a class="el" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">remmina.c</a>
-</li>
<li>disabletoolbar
-: <a class="el" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina.c</a>
-, <a class="el" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina_pref.h</a>
+: <a class="el" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina_pref.h</a>
+, <a class="el" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">remmina.c</a>
</li>
<li>disabletrayicon
: <a class="el" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">remmina.c</a>
diff --git a/public/globals_vars_e.html b/public/globals_vars_e.html
index fca6dc15e..17490d1b7 100644
--- a/public/globals_vars_e.html
+++ b/public/globals_vars_e.html
@@ -91,9 +91,6 @@ $(document).ready(function(){initNavTree('globals_vars_e.html','');});
<li>events
: <a class="el" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">remmina_ssh.c</a>
</li>
-<li>eweekdays
-: <a class="el" href="rmnews_8c.html#af4777302c760225b833206545e9f437d">rmnews.c</a>
-</li>
<li>extrahardening
: <a class="el" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">remmina.c</a>
, <a class="el" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">remmina_pref.h</a>
diff --git a/public/globals_vars_r.html b/public/globals_vars_r.html
index f15260eb0..fc3025941 100644
--- a/public/globals_vars_r.html
+++ b/public/globals_vars_r.html
@@ -338,9 +338,6 @@ $(document).ready(function(){initNavTree('globals_vars_r.html','');});
<li>rm_plugin_service
: <a class="el" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b">x2go_plugin.c</a>
</li>
-<li>rmnews_news_dialog
-: <a class="el" href="rmnews_8c.html#ae1bb737d0381441eebbf3652b3ef416d">rmnews.c</a>
-</li>
<li>rmplugin_x2go
: <a class="el" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68">x2go_plugin.c</a>
</li>
diff --git a/public/globals_vars_s.html b/public/globals_vars_s.html
index 8e2a6d4a4..c357d9c42 100644
--- a/public/globals_vars_s.html
+++ b/public/globals_vars_s.html
@@ -91,9 +91,6 @@ $(document).ready(function(){initNavTree('globals_vars_s.html','');});
<li>security_list
: <a class="el" href="rdp__plugin_8c.html#a2f9e1bbd16e19411adbd6a423a9b571f">rdp_plugin.c</a>
</li>
-<li>session
-: <a class="el" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">rmnews.c</a>
-</li>
<li>solarized_dark_palette
: <a class="el" href="remmina__ssh__plugin_8c.html#afebc284e31a21ecc0316baf2115aa99f">remmina_ssh_plugin.c</a>
</li>
@@ -104,8 +101,8 @@ $(document).ready(function(){initNavTree('globals_vars_s.html','');});
: <a class="el" href="rdp__plugin_8c.html#a36918dbbfad26310cfe3a3aed5f8f5dc">rdp_plugin.c</a>
</li>
<li>ssh_auth
-: <a class="el" href="remmina__ssh__plugin_8c.html#ab69dae8eb9c3744fcf53a0f482b18f19">remmina_ssh_plugin.c</a>
-, <a class="el" href="remmina__sftp__plugin_8c.html#ab69dae8eb9c3744fcf53a0f482b18f19">remmina_sftp_plugin.c</a>
+: <a class="el" href="remmina__sftp__plugin_8c.html#ab69dae8eb9c3744fcf53a0f482b18f19">remmina_sftp_plugin.c</a>
+, <a class="el" href="remmina__ssh__plugin_8c.html#ab69dae8eb9c3744fcf53a0f482b18f19">remmina_ssh_plugin.c</a>
</li>
<li>ssh_charset_list
: <a class="el" href="remmina__ssh__plugin_8c.html#a8ebdfc8dcc1306424cbf1ed9dfd30c89">remmina_ssh_plugin.c</a>
@@ -120,8 +117,7 @@ $(document).ready(function(){initNavTree('globals_vars_s.html','');});
: <a class="el" href="remmina__string__list_8c.html#a6f8601a848bb964c1c9caf69d00128b8">remmina_string_list.c</a>
</li>
<li>supported_mime_types
-: <a class="el" href="rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12">rmnews.c</a>
-, <a class="el" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">remmina_main.c</a>
+: <a class="el" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">remmina_main.c</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/public/menudata.js b/public/menudata.js
index 966675fac..b0187f3e0 100644
--- a/public/menudata.js
+++ b/public/menudata.js
@@ -127,7 +127,6 @@ var menudata={children:[
{text:"l",url:"globals_vars_l.html#index_l"},
{text:"m",url:"globals_vars_m.html#index_m"},
{text:"n",url:"globals_vars_n.html#index_n"},
-{text:"o",url:"globals_vars_o.html#index_o"},
{text:"p",url:"globals_vars_p.html#index_p"},
{text:"q",url:"globals_vars_q.html#index_q"},
{text:"r",url:"globals_vars_r.html#index_r"},
diff --git a/public/navtreedata.js b/public/navtreedata.js
index 7a00d3048..e4c935fde 100644
--- a/public/navtreedata.js
+++ b/public/navtreedata.js
@@ -86,24 +86,24 @@ var NAVTREE =
var NAVTREEINDEX =
[
"annotated.html",
-"kwallet__plugin_8h.html#ad44ed3af2cdfb051e5122b85604cd0cd",
-"python__wrapper__protocol_8h.html#ad9e2034841e5b0a10291ad015e4bfc46",
-"rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3",
-"rdp__plugin_8c.html#a1beaae641f40fc4fbcafe84846a2eb76",
-"remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1",
-"remmina__ftp__client_8c.html#a437dba2fc4f44f119501e9b53c688dd1",
-"remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89",
-"remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290",
-"remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3",
-"remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b",
-"remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c",
-"struct___remmina_avahi_priv.html#a50c8ac85caddd549b65e8b5f56d7b7e0",
-"struct___remmina_plugin_service.html",
-"struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c",
-"struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05",
-"struct_py_remmina_protocol_feature.html#a9f3cc7cfae91a2651c3d78bbc3feb53d",
-"structrf__context.html#a3712f6b20462e62a6bb87038e5f10d9d",
-"vnc__plugin_8c.html#af77b4e3099a5d382aa4b840e4aecaadc"
+"kwallet__plugin_8h.html#ad91b525d838f1f2d62734c84a9f890ba",
+"python__wrapper__protocol_8h_source.html",
+"rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6",
+"rdp__plugin_8c.html#a1d631ea2efdaff13c9f372fe487d5e4c",
+"remmina__crypt_8c_source.html",
+"remmina__ftp__client_8c.html#a4b4e260fb27466bfd66cb55e5b135715",
+"remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1",
+"remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be",
+"remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923",
+"remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06",
+"remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75",
+"struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97",
+"struct___remmina_plugin_service.html#a5a3ff49d651bc4f82fab2ca534bc3100",
+"struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d",
+"struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc",
+"structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c",
+"structrf__pointer.html",
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a20be7f0ccef7d70651347889eba498a4"
];
var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/public/navtreeindex0.js b/public/navtreeindex0.js
index e0bbff580..bc771c21e 100644
--- a/public/navtreeindex0.js
+++ b/public/navtreeindex0.js
@@ -18,8 +18,8 @@ var NAVTREEINDEX0 =
"exec__plugin__config_8h.html":[59,0,1],
"exec__plugin__config_8h_source.html":[59,0,1],
"files.html":[59,0],
-"functions.html":[58,2,0],
"functions.html":[58,2,0,0],
+"functions.html":[58,2,0],
"functions_8sh.html":[59,0,2],
"functions_8sh_source.html":[59,0,2],
"functions_a.html":[58,2,0,1],
@@ -174,15 +174,14 @@ var NAVTREEINDEX0 =
"globals_vars_l.html":[59,1,2,10],
"globals_vars_m.html":[59,1,2,11],
"globals_vars_n.html":[59,1,2,12],
-"globals_vars_o.html":[59,1,2,13],
-"globals_vars_p.html":[59,1,2,14],
-"globals_vars_q.html":[59,1,2,15],
-"globals_vars_r.html":[59,1,2,16],
-"globals_vars_s.html":[59,1,2,17],
-"globals_vars_t.html":[59,1,2,18],
-"globals_vars_u.html":[59,1,2,19],
-"globals_vars_v.html":[59,1,2,20],
-"globals_vars_x.html":[59,1,2,21],
+"globals_vars_p.html":[59,1,2,13],
+"globals_vars_q.html":[59,1,2,14],
+"globals_vars_r.html":[59,1,2,15],
+"globals_vars_s.html":[59,1,2,16],
+"globals_vars_t.html":[59,1,2,17],
+"globals_vars_u.html":[59,1,2,18],
+"globals_vars_v.html":[59,1,2,19],
+"globals_vars_x.html":[59,1,2,20],
"globals_w.html":[59,1,0,23],
"globals_x.html":[59,1,0,24],
"gvnc__plugin_8c.html":[59,0,6],
@@ -249,5 +248,6 @@ var NAVTREEINDEX0 =
"index.html":[],
"kwallet__plugin_8h.html":[59,0,10],
"kwallet__plugin_8h.html#a1cce5ef9ceee5e678840c92b4bb0a4a9":[59,0,10,2],
-"kwallet__plugin_8h.html#ab0039ed9f1ecfa8937bed720fe408ae5":[59,0,10,1]
+"kwallet__plugin_8h.html#ab0039ed9f1ecfa8937bed720fe408ae5":[59,0,10,1],
+"kwallet__plugin_8h.html#ad44ed3af2cdfb051e5122b85604cd0cd":[59,0,10,0]
};
diff --git a/public/navtreeindex1.js b/public/navtreeindex1.js
index 9439efa38..041376d0c 100644
--- a/public/navtreeindex1.js
+++ b/public/navtreeindex1.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX1 =
{
-"kwallet__plugin_8h.html#ad44ed3af2cdfb051e5122b85604cd0cd":[59,0,10,0],
"kwallet__plugin_8h.html#ad91b525d838f1f2d62734c84a9f890ba":[59,0,10,3],
"kwallet__plugin_8h.html#ae088299c1e5a756c6a178e1dd1becfe3":[59,0,10,4],
"kwallet__plugin_8h_source.html":[59,0,10],
@@ -249,5 +248,6 @@ var NAVTREEINDEX1 =
"python__wrapper__protocol_8h.html":[59,0,29],
"python__wrapper__protocol_8h.html#a26eea3cdd2d97d5cd8ad00d2bbe17c29":[59,0,29,3],
"python__wrapper__protocol_8h.html#aaa90f5541895f5c3dedaa16c15d80de7":[59,0,29,2],
-"python__wrapper__protocol_8h.html#ab223d3563d16258e33e8dfae0ee41e5d":[59,0,29,4]
+"python__wrapper__protocol_8h.html#ab223d3563d16258e33e8dfae0ee41e5d":[59,0,29,4],
+"python__wrapper__protocol_8h.html#ad9e2034841e5b0a10291ad015e4bfc46":[59,0,29,5]
};
diff --git a/public/navtreeindex10.js b/public/navtreeindex10.js
index d89049e62..0de0d1abb 100644
--- a/public/navtreeindex10.js
+++ b/public/navtreeindex10.js
@@ -1,9 +1,5 @@
var NAVTREEINDEX10 =
{
-"remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b":[59,0,134,32],
-"remmina__ssh_8h.html#a1dd627c6195e879ba5ca12f5d590b10d":[59,0,134,7],
-"remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2":[59,0,134,18],
-"remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d":[59,0,134,27],
"remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06":[59,0,134,35],
"remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d":[59,0,134,30],
"remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84":[59,0,134,29],
@@ -221,33 +217,37 @@ var NAVTREEINDEX10 =
"remmina__unlock_8h.html#abc7edbf46b8fed74a7517706d9f6cd05":[59,0,148,4],
"remmina__unlock_8h_source.html":[59,0,148],
"remmina__utils_8c.html":[59,0,149],
-"remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324":[59,0,149,10],
-"remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730":[59,0,149,7],
+"remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324":[59,0,149,9],
+"remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730":[59,0,149,6],
"remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1":[59,0,149,2],
-"remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa":[59,0,149,16],
-"remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c":[59,0,149,11],
+"remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa":[59,0,149,15],
+"remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c":[59,0,149,10],
"remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba":[59,0,149,3],
-"remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e":[59,0,149,4],
-"remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c":[59,0,149,6],
-"remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa":[59,0,149,9],
-"remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca":[59,0,149,14],
-"remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355":[59,0,149,17],
-"remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478":[59,0,149,22],
-"remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c":[59,0,149,23],
-"remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4":[59,0,149,18],
-"remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22":[59,0,149,13],
-"remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522":[59,0,149,8],
-"remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75":[59,0,149,12],
-"remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66":[59,0,149,19],
-"remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3":[59,0,149,21],
-"remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99":[59,0,149,15],
-"remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d":[59,0,149,20],
-"remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8":[59,0,149,5],
+"remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c":[59,0,149,5],
+"remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa":[59,0,149,8],
+"remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca":[59,0,149,13],
+"remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355":[59,0,149,16],
+"remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478":[59,0,149,21],
+"remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c":[59,0,149,22],
+"remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4":[59,0,149,17],
+"remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22":[59,0,149,12],
+"remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522":[59,0,149,7],
+"remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75":[59,0,149,11],
+"remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66":[59,0,149,18],
+"remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3":[59,0,149,20],
+"remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99":[59,0,149,14],
+"remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d":[59,0,149,19],
+"remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8":[59,0,149,4],
"remmina__utils_8c_source.html":[59,0,149],
"remmina__utils_8h.html":[59,0,150],
-"remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324":[59,0,150,6],
-"remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730":[59,0,150,3],
-"remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c":[59,0,150,7],
-"remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be":[59,0,150,12],
-"remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e":[59,0,150,0]
+"remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324":[59,0,150,5],
+"remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730":[59,0,150,2],
+"remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c":[59,0,150,6],
+"remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be":[59,0,150,11],
+"remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c":[59,0,150,1],
+"remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa":[59,0,150,4],
+"remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca":[59,0,150,9],
+"remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4":[59,0,150,12],
+"remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22":[59,0,150,8],
+"remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522":[59,0,150,3]
};
diff --git a/public/navtreeindex11.js b/public/navtreeindex11.js
index 61aa1575e..f205b0c4a 100644
--- a/public/navtreeindex11.js
+++ b/public/navtreeindex11.js
@@ -1,16 +1,10 @@
var NAVTREEINDEX11 =
{
-"remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c":[59,0,150,2],
-"remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa":[59,0,150,5],
-"remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca":[59,0,150,10],
-"remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4":[59,0,150,13],
-"remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22":[59,0,150,9],
-"remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522":[59,0,150,4],
-"remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75":[59,0,150,8],
-"remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66":[59,0,150,14],
-"remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99":[59,0,150,11],
-"remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d":[59,0,150,15],
-"remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8":[59,0,150,1],
+"remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75":[59,0,150,7],
+"remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66":[59,0,150,13],
+"remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99":[59,0,150,10],
+"remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d":[59,0,150,14],
+"remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8":[59,0,150,0],
"remmina__utils_8h_source.html":[59,0,150],
"remmina__widget__pool_8c.html":[59,0,151],
"remmina__widget__pool_8c.html#a0a6a2069cdbbb920fb09f95bec3e997e":[59,0,151,2],
@@ -31,95 +25,67 @@ var NAVTREEINDEX11 =
"remmina__widget__pool_8h.html#ae3c9c9853eb5bedbfeadbfac1d495b95":[59,0,152,5],
"remmina__widget__pool_8h.html#af888e4e0c2d590e61c72608a7482f18a":[59,0,152,0],
"remmina__widget__pool_8h_source.html":[59,0,152],
-"rmnews_8c.html":[59,0,153],
-"rmnews_8c.html#a0b8a063b164dbf0798982daa9399a793":[59,0,153,9],
-"rmnews_8c.html#a11d7277ba911522ac40656774cbe41b9":[59,0,153,3],
-"rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336":[59,0,153,17],
-"rmnews_8c.html#a26cb497eeb30a956dcdc5790b393a301":[59,0,153,4],
-"rmnews_8c.html#a341ebc424e040f8f8a2e5e46b1920c7e":[59,0,153,6],
-"rmnews_8c.html#a565782499953048b5e51934123195e29":[59,0,153,15],
-"rmnews_8c.html#a59416d6e8999802e8b145b0338331081":[59,0,153,5],
-"rmnews_8c.html#a7825b2c9facea97439f5780d83e86798":[59,0,153,1],
-"rmnews_8c.html#a78c63694cb6197f185242acac0ea1575":[59,0,153,10],
-"rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a":[59,0,153,12],
-"rmnews_8c.html#a88b2d9ce9e7bc64373e2eb7f904a0814":[59,0,153,11],
-"rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12":[59,0,153,18],
-"rmnews_8c.html#a9a0c1177e67a08c991e5344196ebac01":[59,0,153,7],
-"rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38":[59,0,153,8],
-"rmnews_8c.html#aaa3ec81813c3b38be1f75885e6005a00":[59,0,153,0],
-"rmnews_8c.html#adf38ed099d3ac477aea7e3bbd6d95bd4":[59,0,153,2],
-"rmnews_8c.html#ae1bb737d0381441eebbf3652b3ef416d":[59,0,153,16],
-"rmnews_8c.html#af4777302c760225b833206545e9f437d":[59,0,153,14],
-"rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe":[59,0,153,13],
-"rmnews_8c_source.html":[59,0,153],
-"rmnews_8h.html":[59,0,154],
-"rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e":[59,0,154,2],
-"rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af":[59,0,154,4],
-"rmnews_8h.html#a408794dbcf4d1034bab0bd0e64fa4709":[59,0,154,1],
-"rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b":[59,0,154,5],
-"rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a":[59,0,154,3],
-"rmnews_8h_source.html":[59,0,154],
-"spice__plugin_8c.html":[59,0,155],
-"spice__plugin_8c.html#a0524df751040673aec5d62839c76a438":[59,0,155,14],
-"spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59":[59,0,155,29],
-"spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb":[59,0,155,12],
-"spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998":[59,0,155,32],
-"spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe":[59,0,155,10],
-"spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb":[59,0,155,16],
-"spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660":[59,0,155,24],
-"spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4":[59,0,155,23],
-"spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,155,6],
-"spice__plugin_8c.html#a5d23d66bdcf463d31b74ec813d3a0fe5":[59,0,155,26],
-"spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a":[59,0,155,21],
-"spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81":[59,0,155,35],
-"spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da":[59,0,155,27],
-"spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39":[59,0,155,28],
-"spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d":[59,0,155,19],
-"spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875":[59,0,155,22],
-"spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,155,31],
-"spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317":[59,0,155,18],
-"spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b":[59,0,155,8],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28":[59,0,155,5],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df":[59,0,155,1],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa":[59,0,155,4],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278":[59,0,155,3],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1":[59,0,155,0],
-"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d":[59,0,155,2],
-"spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4":[59,0,155,20],
-"spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c":[59,0,155,34],
-"spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2":[59,0,155,30],
-"spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80":[59,0,155,36],
-"spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2":[59,0,155,9],
-"spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1":[59,0,155,11],
-"spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c":[59,0,155,15],
-"spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409":[59,0,155,33],
-"spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85":[59,0,155,7],
-"spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b":[59,0,155,17],
-"spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c":[59,0,155,25],
-"spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db":[59,0,155,13],
-"spice__plugin_8c_source.html":[59,0,155],
-"spice__plugin_8h.html":[59,0,156],
-"spice__plugin_8h.html#a1e33d35ec5c4e619baf7c8cc737be368":[59,0,156,1],
-"spice__plugin_8h.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,156,2],
-"spice__plugin_8h_source.html":[59,0,156],
-"spice__plugin__file__transfer_8c.html":[59,0,157],
-"spice__plugin__file__transfer_8c.html#a05ca36e21cf5f169d235f1aadb9f1bf9":[59,0,157,5],
-"spice__plugin__file__transfer_8c.html#a26ba6d7eb231b0ebf29759a86f54ff38":[59,0,157,8],
-"spice__plugin__file__transfer_8c.html#a2cc1ae83d57a5616a840389efe929d02":[59,0,157,1],
-"spice__plugin__file__transfer_8c.html#a31987484a4b93605462bce59f4833249":[59,0,157,2],
-"spice__plugin__file__transfer_8c.html#a513dbc015b2f3b9d2a280331fd65c30b":[59,0,157,6],
-"spice__plugin__file__transfer_8c.html#a57ea32649a7b0bea121deb5a7eca5668":[59,0,157,4],
-"spice__plugin__file__transfer_8c.html#aaefe8f1222c349626add7c86be98707a":[59,0,157,3],
-"spice__plugin__file__transfer_8c.html#ad856e9ce78b9657cacd06baf2ddd3a19":[59,0,157,7],
-"spice__plugin__file__transfer_8c_source.html":[59,0,157],
-"spice__plugin__usb_8c.html":[59,0,158],
-"spice__plugin__usb_8c.html#a4cb3e730cd0d7c44d60122aaf77e671b":[59,0,158,0],
-"spice__plugin__usb_8c.html#af6d5cac7fa54b6b8e432cf07b05eed7b":[59,0,158,1],
-"spice__plugin__usb_8c_source.html":[59,0,158],
+"spice__plugin_8c.html":[59,0,153],
+"spice__plugin_8c.html#a0524df751040673aec5d62839c76a438":[59,0,153,14],
+"spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59":[59,0,153,29],
+"spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb":[59,0,153,12],
+"spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998":[59,0,153,32],
+"spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe":[59,0,153,10],
+"spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb":[59,0,153,16],
+"spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660":[59,0,153,24],
+"spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4":[59,0,153,23],
+"spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,153,6],
+"spice__plugin_8c.html#a5d23d66bdcf463d31b74ec813d3a0fe5":[59,0,153,26],
+"spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a":[59,0,153,21],
+"spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81":[59,0,153,35],
+"spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da":[59,0,153,27],
+"spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39":[59,0,153,28],
+"spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d":[59,0,153,19],
+"spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875":[59,0,153,22],
+"spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,153,31],
+"spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317":[59,0,153,18],
+"spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b":[59,0,153,8],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28":[59,0,153,5],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df":[59,0,153,1],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa":[59,0,153,4],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278":[59,0,153,3],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1":[59,0,153,0],
+"spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d":[59,0,153,2],
+"spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4":[59,0,153,20],
+"spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c":[59,0,153,34],
+"spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2":[59,0,153,30],
+"spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80":[59,0,153,36],
+"spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2":[59,0,153,9],
+"spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1":[59,0,153,11],
+"spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c":[59,0,153,15],
+"spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409":[59,0,153,33],
+"spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85":[59,0,153,7],
+"spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b":[59,0,153,17],
+"spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c":[59,0,153,25],
+"spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db":[59,0,153,13],
+"spice__plugin_8c_source.html":[59,0,153],
+"spice__plugin_8h.html":[59,0,154],
+"spice__plugin_8h.html#a1e33d35ec5c4e619baf7c8cc737be368":[59,0,154,1],
+"spice__plugin_8h.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,154,2],
+"spice__plugin_8h_source.html":[59,0,154],
+"spice__plugin__file__transfer_8c.html":[59,0,155],
+"spice__plugin__file__transfer_8c.html#a05ca36e21cf5f169d235f1aadb9f1bf9":[59,0,155,5],
+"spice__plugin__file__transfer_8c.html#a26ba6d7eb231b0ebf29759a86f54ff38":[59,0,155,8],
+"spice__plugin__file__transfer_8c.html#a2cc1ae83d57a5616a840389efe929d02":[59,0,155,1],
+"spice__plugin__file__transfer_8c.html#a31987484a4b93605462bce59f4833249":[59,0,155,2],
+"spice__plugin__file__transfer_8c.html#a513dbc015b2f3b9d2a280331fd65c30b":[59,0,155,6],
+"spice__plugin__file__transfer_8c.html#a57ea32649a7b0bea121deb5a7eca5668":[59,0,155,4],
+"spice__plugin__file__transfer_8c.html#aaefe8f1222c349626add7c86be98707a":[59,0,155,3],
+"spice__plugin__file__transfer_8c.html#ad856e9ce78b9657cacd06baf2ddd3a19":[59,0,155,7],
+"spice__plugin__file__transfer_8c_source.html":[59,0,155],
+"spice__plugin__usb_8c.html":[59,0,156],
+"spice__plugin__usb_8c.html#a4cb3e730cd0d7c44d60122aaf77e671b":[59,0,156,0],
+"spice__plugin__usb_8c.html#af6d5cac7fa54b6b8e432cf07b05eed7b":[59,0,156,1],
+"spice__plugin__usb_8c_source.html":[59,0,156],
"src_2pygobject_8h.html":[59,0,16],
"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159":[59,0,16,12],
-"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc":[59,0,16,12,0],
"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc":[59,0,17,12,0],
+"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a6ca21e5d81f80ca35b556f92f5ca35cc":[59,0,16,12,0],
"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34":[59,0,17,12,1],
"src_2pygobject_8h.html#a18eca93aad557c40e8a75b655961b159a9ed2edb74e687da7e752fd9968eece34":[59,0,16,12,1],
"src_2pygobject_8h.html#a2fa9a05e0ca89774ce56238aa81a6cac":[59,0,16,14],
@@ -249,5 +215,39 @@ var NAVTREEINDEX11 =
"struct___remmina_avahi.html#aecbc96d4aa70248f15ea9c45e8dec0eb":[58,0,9,1],
"struct___remmina_avahi_priv.html":[58,0,10],
"struct___remmina_avahi_priv.html#a1c851271df1130c5e9506223a8a1d304":[58,0,10,4],
-"struct___remmina_avahi_priv.html#a3522087756f916a09e25faa681e69cf8":[58,0,10,1]
+"struct___remmina_avahi_priv.html#a3522087756f916a09e25faa681e69cf8":[58,0,10,1],
+"struct___remmina_avahi_priv.html#a50c8ac85caddd549b65e8b5f56d7b7e0":[58,0,10,2],
+"struct___remmina_avahi_priv.html#aabad1866d4f15fe3eb42b0438becffe8":[58,0,10,3],
+"struct___remmina_avahi_priv.html#ad98e9c27645d39dd063259aaa7e81040":[58,0,10,0],
+"struct___remmina_cell_renderer_pixbuf.html":[58,0,11],
+"struct___remmina_cell_renderer_pixbuf.html#adc32a5ea949ab492a1d57e64a1adf045":[58,0,11,0],
+"struct___remmina_cell_renderer_pixbuf_class.html":[58,0,12],
+"struct___remmina_cell_renderer_pixbuf_class.html#a7de48233aa52dcdb6cacecc31d2e63e1":[58,0,12,0],
+"struct___remmina_cell_renderer_pixbuf_class.html#ac51470401f7cc972ca9b767e3aa15279":[58,0,12,1],
+"struct___remmina_chat_window.html":[58,0,13],
+"struct___remmina_chat_window.html#a36b1b309a457128964ca6ebfc99e155c":[58,0,13,1],
+"struct___remmina_chat_window.html#a60ccf6b47dcaf89b022eb6c2f71dcd29":[58,0,13,2],
+"struct___remmina_chat_window.html#aac3dfd93816abc268d25268c779719ea":[58,0,13,0],
+"struct___remmina_chat_window_class.html":[58,0,14],
+"struct___remmina_chat_window_class.html#abdd29d9a92f995c4fc1664a61bd4cb19":[58,0,14,0],
+"struct___remmina_chat_window_class.html#ac40f2808400f75787b0a1193744e3372":[58,0,14,1],
+"struct___remmina_color_pref.html":[58,0,15],
+"struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7":[58,0,15,14],
+"struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc":[58,0,15,6],
+"struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808":[58,0,15,1],
+"struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60":[58,0,15,12],
+"struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4":[58,0,15,9],
+"struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1":[58,0,15,17],
+"struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79":[58,0,15,7],
+"struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500":[58,0,15,18],
+"struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4":[58,0,15,15],
+"struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49":[58,0,15,0],
+"struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60":[58,0,15,8],
+"struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9":[58,0,15,13],
+"struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867":[58,0,15,20],
+"struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff":[58,0,15,2],
+"struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f":[58,0,15,19],
+"struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316":[58,0,15,10],
+"struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928":[58,0,15,5],
+"struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc":[58,0,15,16]
};
diff --git a/public/navtreeindex12.js b/public/navtreeindex12.js
index d4ae85f2a..5ee281f92 100644
--- a/public/navtreeindex12.js
+++ b/public/navtreeindex12.js
@@ -1,39 +1,5 @@
var NAVTREEINDEX12 =
{
-"struct___remmina_avahi_priv.html#a50c8ac85caddd549b65e8b5f56d7b7e0":[58,0,10,2],
-"struct___remmina_avahi_priv.html#aabad1866d4f15fe3eb42b0438becffe8":[58,0,10,3],
-"struct___remmina_avahi_priv.html#ad98e9c27645d39dd063259aaa7e81040":[58,0,10,0],
-"struct___remmina_cell_renderer_pixbuf.html":[58,0,11],
-"struct___remmina_cell_renderer_pixbuf.html#adc32a5ea949ab492a1d57e64a1adf045":[58,0,11,0],
-"struct___remmina_cell_renderer_pixbuf_class.html":[58,0,12],
-"struct___remmina_cell_renderer_pixbuf_class.html#a7de48233aa52dcdb6cacecc31d2e63e1":[58,0,12,0],
-"struct___remmina_cell_renderer_pixbuf_class.html#ac51470401f7cc972ca9b767e3aa15279":[58,0,12,1],
-"struct___remmina_chat_window.html":[58,0,13],
-"struct___remmina_chat_window.html#a36b1b309a457128964ca6ebfc99e155c":[58,0,13,1],
-"struct___remmina_chat_window.html#a60ccf6b47dcaf89b022eb6c2f71dcd29":[58,0,13,2],
-"struct___remmina_chat_window.html#aac3dfd93816abc268d25268c779719ea":[58,0,13,0],
-"struct___remmina_chat_window_class.html":[58,0,14],
-"struct___remmina_chat_window_class.html#abdd29d9a92f995c4fc1664a61bd4cb19":[58,0,14,0],
-"struct___remmina_chat_window_class.html#ac40f2808400f75787b0a1193744e3372":[58,0,14,1],
-"struct___remmina_color_pref.html":[58,0,15],
-"struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7":[58,0,15,14],
-"struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc":[58,0,15,6],
-"struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808":[58,0,15,1],
-"struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60":[58,0,15,12],
-"struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4":[58,0,15,9],
-"struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1":[58,0,15,17],
-"struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79":[58,0,15,7],
-"struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500":[58,0,15,18],
-"struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4":[58,0,15,15],
-"struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49":[58,0,15,0],
-"struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60":[58,0,15,8],
-"struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9":[58,0,15,13],
-"struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867":[58,0,15,20],
-"struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff":[58,0,15,2],
-"struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f":[58,0,15,19],
-"struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316":[58,0,15,10],
-"struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928":[58,0,15,5],
-"struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc":[58,0,15,16],
"struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97":[58,0,15,4],
"struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60":[58,0,15,21],
"struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c":[58,0,15,3],
@@ -188,66 +154,100 @@ var NAVTREEINDEX12 =
"struct___remmina_monitor.html#abc732574457c248961a878dd0689dd3a":[58,0,36,0],
"struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4":[58,0,36,4],
"struct___remmina_monitor.html#adaa8ac5463302ab18a45171b5e4618f1":[58,0,36,1],
-"struct___remmina_news_dialog.html":[58,0,37],
-"struct___remmina_news_dialog.html#a041c5c6f7776a3cdfd1fbcc700dfc749":[58,0,37,5],
-"struct___remmina_news_dialog.html#a04d61af97919ea321ca384711edd2015":[58,0,37,0],
-"struct___remmina_news_dialog.html#a14ee9c2823a4519ed84705fd0fe49ec8":[58,0,37,7],
-"struct___remmina_news_dialog.html#a24dd17da12072e324ce165a9873d59ad":[58,0,37,3],
-"struct___remmina_news_dialog.html#a5f1f924669db7285fac6087e08d6ce19":[58,0,37,4],
-"struct___remmina_news_dialog.html#a652393d5775f6abb7a3b97e1d250797f":[58,0,37,1],
-"struct___remmina_news_dialog.html#a94584de47018f068c242e5f527e3b84f":[58,0,37,8],
-"struct___remmina_news_dialog.html#aa44d2c89a170a509ebb082082efac813":[58,0,37,2],
-"struct___remmina_news_dialog.html#ae4b71b4e789e65063db67f51ce4feb26":[58,0,37,6],
-"struct___remmina_passwd_dialog.html":[58,0,38],
-"struct___remmina_passwd_dialog.html#a4ee579336f011f8f67d8a930fb7276bc":[58,0,38,4],
-"struct___remmina_passwd_dialog.html#ab2a14cf822f81df6a2b142f0e800242b":[58,0,38,6],
-"struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285":[58,0,38,0],
-"struct___remmina_passwd_dialog.html#abefb718627c32067ff63962a8ac747cc":[58,0,38,1],
-"struct___remmina_passwd_dialog.html#add01581b8b9cdc7d13cf711163ac5910":[58,0,38,2],
-"struct___remmina_passwd_dialog.html#ae7c1f8ca078cfe55abf3ea9b83f24373":[58,0,38,5],
-"struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0":[58,0,38,3],
-"struct___remmina_plugin.html":[58,0,39],
-"struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201":[58,0,39,1],
-"struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582":[58,0,39,2],
-"struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde":[58,0,39,0],
-"struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3":[58,0,39,3],
-"struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099":[58,0,39,4],
-"struct___remmina_plugin_exec_data.html":[58,0,40],
-"struct___remmina_plugin_exec_data.html#a59117466c585cabdc32c363083867bbb":[58,0,40,3],
-"struct___remmina_plugin_exec_data.html#a9adc6a977b68bd6fc1dc1f60c834ed41":[58,0,40,1],
-"struct___remmina_plugin_exec_data.html#a9ff6bc2fe9796bdc74fda1677ebf80c4":[58,0,40,0],
-"struct___remmina_plugin_exec_data.html#ac7ad166ff0ad398b004d39b72a5aa2e1":[58,0,40,2],
-"struct___remmina_plugin_rdpset_grid.html":[58,0,41],
-"struct___remmina_plugin_rdpset_grid.html#a04a3bee67aa51808a69ded75e643e4c0":[58,0,41,23],
-"struct___remmina_plugin_rdpset_grid.html#a136e2daf6819eb2b3d83d20dab6f6621":[58,0,41,17],
-"struct___remmina_plugin_rdpset_grid.html#a218c72fa62d3bbc635cff8938f459e15":[58,0,41,8],
-"struct___remmina_plugin_rdpset_grid.html#a220634fcc8fcda079d8443b4898093af":[58,0,41,18],
-"struct___remmina_plugin_rdpset_grid.html#a2614c8e9f649cde3e0184228cb227cf4":[58,0,41,3],
-"struct___remmina_plugin_rdpset_grid.html#a2e5ba950872f1a5db42a7b077cb02860":[58,0,41,7],
-"struct___remmina_plugin_rdpset_grid.html#a3fff8bb3e1cbce9b83f1ed78263a5acd":[58,0,41,11],
-"struct___remmina_plugin_rdpset_grid.html#a515323687d10da1af50cee93ea2c9b93":[58,0,41,1],
-"struct___remmina_plugin_rdpset_grid.html#a5ed6dc93d2f43db961c3c0a3a92f2d4d":[58,0,41,15],
-"struct___remmina_plugin_rdpset_grid.html#a7278fb4de2fb55e20ca0cc9ccffd5372":[58,0,41,4],
-"struct___remmina_plugin_rdpset_grid.html#a7390f86f6f634e4571db112662182a5b":[58,0,41,5],
-"struct___remmina_plugin_rdpset_grid.html#a785392cdbf938812c96ce67ec87d55c5":[58,0,41,13],
-"struct___remmina_plugin_rdpset_grid.html#a99ba668180c8cf5e5bfc2d899aee73ec":[58,0,41,12],
-"struct___remmina_plugin_rdpset_grid.html#a9a06aa388c5b2a6d50d921b169b3723b":[58,0,41,16],
-"struct___remmina_plugin_rdpset_grid.html#aadd548c398b9094ea862f189d0f088c6":[58,0,41,9],
-"struct___remmina_plugin_rdpset_grid.html#aaddc109b8404a5bbca0c8b0810ae922e":[58,0,41,0],
-"struct___remmina_plugin_rdpset_grid.html#ad64fd1c5a1230a98afaff86ece884ff3":[58,0,41,6],
-"struct___remmina_plugin_rdpset_grid.html#adc95f8c8732eb300f3f12e40564a27a7":[58,0,41,19],
-"struct___remmina_plugin_rdpset_grid.html#ade8c5db180127c00e8413ec0c110da29":[58,0,41,2],
-"struct___remmina_plugin_rdpset_grid.html#adf5582328d395582e4c364d64c3561a3":[58,0,41,10],
-"struct___remmina_plugin_rdpset_grid.html#ae5744e97f282983eabf61572022702bf":[58,0,41,20],
-"struct___remmina_plugin_rdpset_grid.html#aedf291b1b5cf61eb25731605e42fc319":[58,0,41,22],
-"struct___remmina_plugin_rdpset_grid.html#aefce226217c7ca11de97f9511ae8150f":[58,0,41,14],
-"struct___remmina_plugin_rdpset_grid.html#aff981af8772341c9c7adc7515bec3970":[58,0,41,21],
-"struct___remmina_plugin_rdpset_grid_class.html":[58,0,42],
-"struct___remmina_plugin_rdpset_grid_class.html#a3ebf87a7ad92e0d8877f222bb9c4f0c9":[58,0,42,0],
-"struct___remmina_plugin_screenshot_data.html":[58,0,43],
-"struct___remmina_plugin_screenshot_data.html#a757f692624e3e110eaa5bf0c05ac2a6c":[58,0,43,1],
-"struct___remmina_plugin_screenshot_data.html#a9274a9d62e527ca25683af512505242e":[58,0,43,3],
-"struct___remmina_plugin_screenshot_data.html#aa0f78eb9b36ba248c2e368684903ae44":[58,0,43,2],
-"struct___remmina_plugin_screenshot_data.html#ab5d115d8f9fc675f2419d38cdd424ce6":[58,0,43,4],
-"struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d":[58,0,43,0]
+"struct___remmina_passwd_dialog.html":[58,0,37],
+"struct___remmina_passwd_dialog.html#a4ee579336f011f8f67d8a930fb7276bc":[58,0,37,4],
+"struct___remmina_passwd_dialog.html#ab2a14cf822f81df6a2b142f0e800242b":[58,0,37,6],
+"struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285":[58,0,37,0],
+"struct___remmina_passwd_dialog.html#abefb718627c32067ff63962a8ac747cc":[58,0,37,1],
+"struct___remmina_passwd_dialog.html#add01581b8b9cdc7d13cf711163ac5910":[58,0,37,2],
+"struct___remmina_passwd_dialog.html#ae7c1f8ca078cfe55abf3ea9b83f24373":[58,0,37,5],
+"struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0":[58,0,37,3],
+"struct___remmina_plugin.html":[58,0,38],
+"struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201":[58,0,38,1],
+"struct___remmina_plugin.html#a3f09b29bb3b0c044780d56a8b1a51582":[58,0,38,2],
+"struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde":[58,0,38,0],
+"struct___remmina_plugin.html#ac7f294cb3a5e989e95f619780ede87d3":[58,0,38,3],
+"struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099":[58,0,38,4],
+"struct___remmina_plugin_exec_data.html":[58,0,39],
+"struct___remmina_plugin_exec_data.html#a59117466c585cabdc32c363083867bbb":[58,0,39,3],
+"struct___remmina_plugin_exec_data.html#a9adc6a977b68bd6fc1dc1f60c834ed41":[58,0,39,1],
+"struct___remmina_plugin_exec_data.html#a9ff6bc2fe9796bdc74fda1677ebf80c4":[58,0,39,0],
+"struct___remmina_plugin_exec_data.html#ac7ad166ff0ad398b004d39b72a5aa2e1":[58,0,39,2],
+"struct___remmina_plugin_rdpset_grid.html":[58,0,40],
+"struct___remmina_plugin_rdpset_grid.html#a04a3bee67aa51808a69ded75e643e4c0":[58,0,40,23],
+"struct___remmina_plugin_rdpset_grid.html#a136e2daf6819eb2b3d83d20dab6f6621":[58,0,40,17],
+"struct___remmina_plugin_rdpset_grid.html#a218c72fa62d3bbc635cff8938f459e15":[58,0,40,8],
+"struct___remmina_plugin_rdpset_grid.html#a220634fcc8fcda079d8443b4898093af":[58,0,40,18],
+"struct___remmina_plugin_rdpset_grid.html#a2614c8e9f649cde3e0184228cb227cf4":[58,0,40,3],
+"struct___remmina_plugin_rdpset_grid.html#a2e5ba950872f1a5db42a7b077cb02860":[58,0,40,7],
+"struct___remmina_plugin_rdpset_grid.html#a3fff8bb3e1cbce9b83f1ed78263a5acd":[58,0,40,11],
+"struct___remmina_plugin_rdpset_grid.html#a515323687d10da1af50cee93ea2c9b93":[58,0,40,1],
+"struct___remmina_plugin_rdpset_grid.html#a5ed6dc93d2f43db961c3c0a3a92f2d4d":[58,0,40,15],
+"struct___remmina_plugin_rdpset_grid.html#a7278fb4de2fb55e20ca0cc9ccffd5372":[58,0,40,4],
+"struct___remmina_plugin_rdpset_grid.html#a7390f86f6f634e4571db112662182a5b":[58,0,40,5],
+"struct___remmina_plugin_rdpset_grid.html#a785392cdbf938812c96ce67ec87d55c5":[58,0,40,13],
+"struct___remmina_plugin_rdpset_grid.html#a99ba668180c8cf5e5bfc2d899aee73ec":[58,0,40,12],
+"struct___remmina_plugin_rdpset_grid.html#a9a06aa388c5b2a6d50d921b169b3723b":[58,0,40,16],
+"struct___remmina_plugin_rdpset_grid.html#aadd548c398b9094ea862f189d0f088c6":[58,0,40,9],
+"struct___remmina_plugin_rdpset_grid.html#aaddc109b8404a5bbca0c8b0810ae922e":[58,0,40,0],
+"struct___remmina_plugin_rdpset_grid.html#ad64fd1c5a1230a98afaff86ece884ff3":[58,0,40,6],
+"struct___remmina_plugin_rdpset_grid.html#adc95f8c8732eb300f3f12e40564a27a7":[58,0,40,19],
+"struct___remmina_plugin_rdpset_grid.html#ade8c5db180127c00e8413ec0c110da29":[58,0,40,2],
+"struct___remmina_plugin_rdpset_grid.html#adf5582328d395582e4c364d64c3561a3":[58,0,40,10],
+"struct___remmina_plugin_rdpset_grid.html#ae5744e97f282983eabf61572022702bf":[58,0,40,20],
+"struct___remmina_plugin_rdpset_grid.html#aedf291b1b5cf61eb25731605e42fc319":[58,0,40,22],
+"struct___remmina_plugin_rdpset_grid.html#aefce226217c7ca11de97f9511ae8150f":[58,0,40,14],
+"struct___remmina_plugin_rdpset_grid.html#aff981af8772341c9c7adc7515bec3970":[58,0,40,21],
+"struct___remmina_plugin_rdpset_grid_class.html":[58,0,41],
+"struct___remmina_plugin_rdpset_grid_class.html#a3ebf87a7ad92e0d8877f222bb9c4f0c9":[58,0,41,0],
+"struct___remmina_plugin_screenshot_data.html":[58,0,42],
+"struct___remmina_plugin_screenshot_data.html#a757f692624e3e110eaa5bf0c05ac2a6c":[58,0,42,1],
+"struct___remmina_plugin_screenshot_data.html#a9274a9d62e527ca25683af512505242e":[58,0,42,3],
+"struct___remmina_plugin_screenshot_data.html#aa0f78eb9b36ba248c2e368684903ae44":[58,0,42,2],
+"struct___remmina_plugin_screenshot_data.html#ab5d115d8f9fc675f2419d38cdd424ce6":[58,0,42,4],
+"struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d":[58,0,42,0],
+"struct___remmina_plugin_service.html":[58,0,43],
+"struct___remmina_plugin_service.html#a01c0bd50f8ada915867a36004888907c":[58,0,43,91],
+"struct___remmina_plugin_service.html#a07b9812071a528428d200e2ddc295f8e":[58,0,43,72],
+"struct___remmina_plugin_service.html#a0884b2124ba4ea3f747f00bbe91135d2":[58,0,43,31],
+"struct___remmina_plugin_service.html#a0a49c8a3dfef48e4163441902a54223a":[58,0,43,85],
+"struct___remmina_plugin_service.html#a0a9365a2faa05153ce10843386e2598e":[58,0,43,79],
+"struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de":[58,0,43,7],
+"struct___remmina_plugin_service.html#a1205c4396dc54b38e572f8e01a5c560d":[58,0,43,75],
+"struct___remmina_plugin_service.html#a131fa2ef9ea3cb14562ab64c9bde9f64":[58,0,43,106],
+"struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4":[58,0,43,41],
+"struct___remmina_plugin_service.html#a1bbf968b63ccd08024ebb527e6d6c406":[58,0,43,127],
+"struct___remmina_plugin_service.html#a1c333b5ca0eb704ca4001ea634d56791":[58,0,43,86],
+"struct___remmina_plugin_service.html#a1dfc1c5ff1c695718b2b2e91133b9219":[58,0,43,117],
+"struct___remmina_plugin_service.html#a226aaa797fe700f5d012f5c5d36b3c82":[58,0,43,95],
+"struct___remmina_plugin_service.html#a258d391bcfff1409d27bee0743aec6c1":[58,0,43,68],
+"struct___remmina_plugin_service.html#a2919b48fd95b772b590b430a03ecb98f":[58,0,43,11],
+"struct___remmina_plugin_service.html#a2a2ce8e15512459b816ce22cfe5c0550":[58,0,43,59],
+"struct___remmina_plugin_service.html#a2aed8ad938301963b15d647d29b5ff10":[58,0,43,83],
+"struct___remmina_plugin_service.html#a2b75137f9d7739c0d7881ee16e2aabfa":[58,0,43,16],
+"struct___remmina_plugin_service.html#a2b8a0b0bec032f01906ab197678204de":[58,0,43,22],
+"struct___remmina_plugin_service.html#a2cf031e840ea76da2d17cfcd8d20c4e0":[58,0,43,15],
+"struct___remmina_plugin_service.html#a2d6704aa58ecc18ecc178ea418addd87":[58,0,43,64],
+"struct___remmina_plugin_service.html#a2d76917789e30f441015f878a344e0e3":[58,0,43,118],
+"struct___remmina_plugin_service.html#a2fa0887784511624d524af62589bd506":[58,0,43,113],
+"struct___remmina_plugin_service.html#a3746762bfcf6f177c03dbd6ffef1a5e1":[58,0,43,110],
+"struct___remmina_plugin_service.html#a383784716c9aa4135c09670c2ccc48cd":[58,0,43,88],
+"struct___remmina_plugin_service.html#a387f974b25c4164811f661128e200c8c":[58,0,43,33],
+"struct___remmina_plugin_service.html#a3e05115143ed8a545605a25a497a2db5":[58,0,43,92],
+"struct___remmina_plugin_service.html#a402cb9bb28e67cec7f643968767453cb":[58,0,43,116],
+"struct___remmina_plugin_service.html#a40855f4643654a7f2a88f72008ea0b5e":[58,0,43,90],
+"struct___remmina_plugin_service.html#a42ca6bc7a62f91efdba93cde19b347ce":[58,0,43,121],
+"struct___remmina_plugin_service.html#a434bf35a11eea8a5b653ffd8c7823d84":[58,0,43,97],
+"struct___remmina_plugin_service.html#a45416583767fafcac3fe3a9ac50d400f":[58,0,43,104],
+"struct___remmina_plugin_service.html#a4558dbff70064da3de58a6d684611fad":[58,0,43,67],
+"struct___remmina_plugin_service.html#a46433bff9d6f3ea25b67115031e94e9b":[58,0,43,89],
+"struct___remmina_plugin_service.html#a48651c1147371e7e9069eb1fd06a9e4f":[58,0,43,3],
+"struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3":[58,0,43,14],
+"struct___remmina_plugin_service.html#a4d39a5300472a230a65d44ac16391186":[58,0,43,39],
+"struct___remmina_plugin_service.html#a4da50fa364ddf1fcf22def341f61a7cb":[58,0,43,13],
+"struct___remmina_plugin_service.html#a4eac7cd317ef677917c2fa7b1859a189":[58,0,43,61],
+"struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2":[58,0,43,123],
+"struct___remmina_plugin_service.html#a54c773d5581087b272a9377893b92999":[58,0,43,46],
+"struct___remmina_plugin_service.html#a56d9c128a36c1713ddb2dc88033ae7ea":[58,0,43,58],
+"struct___remmina_plugin_service.html#a588f2c328c535384a0adaac027c4df72":[58,0,43,2]
};
diff --git a/public/navtreeindex13.js b/public/navtreeindex13.js
index 978c1bbb4..f4eb88e9a 100644
--- a/public/navtreeindex13.js
+++ b/public/navtreeindex13.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX13 =
{
-"struct___remmina_plugin_service.html":[58,0,44],
-"struct___remmina_plugin_service.html#a01c0bd50f8ada915867a36004888907c":[58,0,44,91],
-"struct___remmina_plugin_service.html#a07b9812071a528428d200e2ddc295f8e":[58,0,44,72],
-"struct___remmina_plugin_service.html#a0884b2124ba4ea3f747f00bbe91135d2":[58,0,44,31],
-"struct___remmina_plugin_service.html#a0a49c8a3dfef48e4163441902a54223a":[58,0,44,85],
-"struct___remmina_plugin_service.html#a0a9365a2faa05153ce10843386e2598e":[58,0,44,79],
-"struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de":[58,0,44,7],
-"struct___remmina_plugin_service.html#a1205c4396dc54b38e572f8e01a5c560d":[58,0,44,75],
-"struct___remmina_plugin_service.html#a131fa2ef9ea3cb14562ab64c9bde9f64":[58,0,44,106],
-"struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4":[58,0,44,41],
-"struct___remmina_plugin_service.html#a1bbf968b63ccd08024ebb527e6d6c406":[58,0,44,127],
-"struct___remmina_plugin_service.html#a1c333b5ca0eb704ca4001ea634d56791":[58,0,44,86],
-"struct___remmina_plugin_service.html#a1dfc1c5ff1c695718b2b2e91133b9219":[58,0,44,117],
-"struct___remmina_plugin_service.html#a226aaa797fe700f5d012f5c5d36b3c82":[58,0,44,95],
-"struct___remmina_plugin_service.html#a258d391bcfff1409d27bee0743aec6c1":[58,0,44,68],
-"struct___remmina_plugin_service.html#a2919b48fd95b772b590b430a03ecb98f":[58,0,44,11],
-"struct___remmina_plugin_service.html#a2a2ce8e15512459b816ce22cfe5c0550":[58,0,44,59],
-"struct___remmina_plugin_service.html#a2aed8ad938301963b15d647d29b5ff10":[58,0,44,83],
-"struct___remmina_plugin_service.html#a2b75137f9d7739c0d7881ee16e2aabfa":[58,0,44,16],
-"struct___remmina_plugin_service.html#a2b8a0b0bec032f01906ab197678204de":[58,0,44,22],
-"struct___remmina_plugin_service.html#a2cf031e840ea76da2d17cfcd8d20c4e0":[58,0,44,15],
-"struct___remmina_plugin_service.html#a2d6704aa58ecc18ecc178ea418addd87":[58,0,44,64],
-"struct___remmina_plugin_service.html#a2d76917789e30f441015f878a344e0e3":[58,0,44,118],
-"struct___remmina_plugin_service.html#a2fa0887784511624d524af62589bd506":[58,0,44,113],
-"struct___remmina_plugin_service.html#a3746762bfcf6f177c03dbd6ffef1a5e1":[58,0,44,110],
-"struct___remmina_plugin_service.html#a383784716c9aa4135c09670c2ccc48cd":[58,0,44,88],
-"struct___remmina_plugin_service.html#a387f974b25c4164811f661128e200c8c":[58,0,44,33],
-"struct___remmina_plugin_service.html#a3e05115143ed8a545605a25a497a2db5":[58,0,44,92],
-"struct___remmina_plugin_service.html#a402cb9bb28e67cec7f643968767453cb":[58,0,44,116],
-"struct___remmina_plugin_service.html#a40855f4643654a7f2a88f72008ea0b5e":[58,0,44,90],
-"struct___remmina_plugin_service.html#a42ca6bc7a62f91efdba93cde19b347ce":[58,0,44,121],
-"struct___remmina_plugin_service.html#a434bf35a11eea8a5b653ffd8c7823d84":[58,0,44,97],
-"struct___remmina_plugin_service.html#a45416583767fafcac3fe3a9ac50d400f":[58,0,44,104],
-"struct___remmina_plugin_service.html#a4558dbff70064da3de58a6d684611fad":[58,0,44,67],
-"struct___remmina_plugin_service.html#a46433bff9d6f3ea25b67115031e94e9b":[58,0,44,89],
-"struct___remmina_plugin_service.html#a48651c1147371e7e9069eb1fd06a9e4f":[58,0,44,3],
-"struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3":[58,0,44,14],
-"struct___remmina_plugin_service.html#a4d39a5300472a230a65d44ac16391186":[58,0,44,39],
-"struct___remmina_plugin_service.html#a4da50fa364ddf1fcf22def341f61a7cb":[58,0,44,13],
-"struct___remmina_plugin_service.html#a4eac7cd317ef677917c2fa7b1859a189":[58,0,44,61],
-"struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2":[58,0,44,123],
-"struct___remmina_plugin_service.html#a54c773d5581087b272a9377893b92999":[58,0,44,46],
-"struct___remmina_plugin_service.html#a56d9c128a36c1713ddb2dc88033ae7ea":[58,0,44,58],
-"struct___remmina_plugin_service.html#a588f2c328c535384a0adaac027c4df72":[58,0,44,2],
-"struct___remmina_plugin_service.html#a5a3ff49d651bc4f82fab2ca534bc3100":[58,0,44,96],
-"struct___remmina_plugin_service.html#a5cb9cccadb5fea7d9925e10ad4c14316":[58,0,44,4],
-"struct___remmina_plugin_service.html#a6135fbf46efacb8e70c5d212b6d97308":[58,0,44,93],
-"struct___remmina_plugin_service.html#a63422af287a04791e1bed20571bd4638":[58,0,44,25],
-"struct___remmina_plugin_service.html#a63683e6046384d902a573e150801e0d3":[58,0,44,60],
-"struct___remmina_plugin_service.html#a6421cc4cd8c2175d769ba5c24a879517":[58,0,44,1],
-"struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc":[58,0,44,10],
-"struct___remmina_plugin_service.html#a6954022faee29280f32c5314243d57e8":[58,0,44,98],
-"struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f":[58,0,44,18],
-"struct___remmina_plugin_service.html#a7120dead43af37f0128ef273aaa99524":[58,0,44,126],
-"struct___remmina_plugin_service.html#a71ec795b6643f1d0aec1a18894eacbd1":[58,0,44,19],
-"struct___remmina_plugin_service.html#a734f491f20072acdcbebb41e36bafe2f":[58,0,44,38],
-"struct___remmina_plugin_service.html#a73fc6117e08cdaabf28d580d144002ac":[58,0,44,99],
-"struct___remmina_plugin_service.html#a74eadbc0cfa97dbc6b66429c1c150998":[58,0,44,84],
-"struct___remmina_plugin_service.html#a7754349ee8199e1d1c5feb2ede8af4cb":[58,0,44,100],
-"struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1":[58,0,44,66],
-"struct___remmina_plugin_service.html#a7c49089bbeae502aae8da63aada22d78":[58,0,44,120],
-"struct___remmina_plugin_service.html#a7c5de526e0adaee6df2654987d92a834":[58,0,44,51],
-"struct___remmina_plugin_service.html#a7cfa21056b4b906e85a463598a210925":[58,0,44,111],
-"struct___remmina_plugin_service.html#a7d17d6869730b103237558b931184ac6":[58,0,44,112],
-"struct___remmina_plugin_service.html#a810268861a25b7794619acc0a8a15209":[58,0,44,5],
-"struct___remmina_plugin_service.html#a832a6822f6aa011f476300d14e738d72":[58,0,44,65],
-"struct___remmina_plugin_service.html#a83e35d80f04cb3d6a8cc883f6a089a24":[58,0,44,50],
-"struct___remmina_plugin_service.html#a83f3c05d16949a06cdddb5c7432b5053":[58,0,44,35],
-"struct___remmina_plugin_service.html#a8556ff64729b2ab223ec84286aa85aa1":[58,0,44,102],
-"struct___remmina_plugin_service.html#a860dc4e2fc1479ec1cbdcc53236df9e9":[58,0,44,30],
-"struct___remmina_plugin_service.html#a881a79477d6e122c0aed7d5528ab6b9a":[58,0,44,37],
-"struct___remmina_plugin_service.html#a8cc8cc627e22e71e257afa9c74d373ef":[58,0,44,24],
-"struct___remmina_plugin_service.html#a8d1c34496a6def21e5ad7d871cd581b5":[58,0,44,49],
-"struct___remmina_plugin_service.html#a8dd2494f449abd9b0c532e69a7aa4057":[58,0,44,40],
-"struct___remmina_plugin_service.html#a956bb502b45a484a22281ca96708beb2":[58,0,44,28],
-"struct___remmina_plugin_service.html#a997a36825f2338b8e06bcd59becef61b":[58,0,44,21],
-"struct___remmina_plugin_service.html#a99ea58f6bc0e2a67cc756e66f954c9b8":[58,0,44,6],
-"struct___remmina_plugin_service.html#a9a91159126712a096665ec42295e42e1":[58,0,44,94],
-"struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704":[58,0,44,45],
-"struct___remmina_plugin_service.html#a9e481e56c9970b741a109c0af04c650d":[58,0,44,48],
-"struct___remmina_plugin_service.html#aa129753441dbfb630cbdb92e447f1d1e":[58,0,44,76],
-"struct___remmina_plugin_service.html#aa159850f20499e5bc1067f533d2fa820":[58,0,44,42],
-"struct___remmina_plugin_service.html#aa305e6b2466c056e61354bfdd833275f":[58,0,44,114],
-"struct___remmina_plugin_service.html#aa413711beeac32a453068c0faf75f164":[58,0,44,8],
-"struct___remmina_plugin_service.html#aaa37f5061689c3663087a19f598e550b":[58,0,44,52],
-"struct___remmina_plugin_service.html#aaadab3f5fde957f5faa7ee6347bb1c6d":[58,0,44,77],
-"struct___remmina_plugin_service.html#aaf43a617b530bc6d4c44c52432f8b5f1":[58,0,44,107],
-"struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6":[58,0,44,71],
-"struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f":[58,0,44,70],
-"struct___remmina_plugin_service.html#ab8bbe7ce317cb9e97da8bf0e34459030":[58,0,44,36],
-"struct___remmina_plugin_service.html#aba59c35b478bad40df46cc94023901ee":[58,0,44,81],
-"struct___remmina_plugin_service.html#abaf7f57e2336f6e5c257e9c30fedc047":[58,0,44,69],
-"struct___remmina_plugin_service.html#abb85b1a32dbf23822400111c30d45290":[58,0,44,26],
-"struct___remmina_plugin_service.html#abd51e82b9296d57abd324aecbf243137":[58,0,44,122],
-"struct___remmina_plugin_service.html#abfb79da3d96ca4aa219eae9c73b0b53f":[58,0,44,44],
-"struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34":[58,0,44,63],
-"struct___remmina_plugin_service.html#ac432221a82ead6babe045cbf18061a0b":[58,0,44,57],
-"struct___remmina_plugin_service.html#ac892dd297fae87868752a1f86e07937d":[58,0,44,55],
-"struct___remmina_plugin_service.html#ac8dab22a850ab394e261bd8d013dc5a3":[58,0,44,56],
-"struct___remmina_plugin_service.html#ac929847020ee699a60771167dae3936b":[58,0,44,27],
-"struct___remmina_plugin_service.html#ace09e4e9fed471465e1a93a716547c2c":[58,0,44,78],
-"struct___remmina_plugin_service.html#ad0c0e810cad311a80cb73746bc299895":[58,0,44,12],
-"struct___remmina_plugin_service.html#ad0f29c76e2ec9ea145faab2313e94749":[58,0,44,74],
-"struct___remmina_plugin_service.html#ad1409c74574c0fc1721b0cbd9f0e8ea2":[58,0,44,105],
-"struct___remmina_plugin_service.html#ad1a15eb04ea5b95e9920df80e6e5c467":[58,0,44,87],
-"struct___remmina_plugin_service.html#ad7957cfe691b8ca187c974deb3309caf":[58,0,44,82],
-"struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174":[58,0,44,53],
-"struct___remmina_plugin_service.html#add5c06ac9c7a5fb3b3459731ffc8e964":[58,0,44,32],
-"struct___remmina_plugin_service.html#add6cf489a59e5d81f71c4425a039c47f":[58,0,44,115],
-"struct___remmina_plugin_service.html#adf255b7ceaec6a51fc9269cf824a02ce":[58,0,44,43],
-"struct___remmina_plugin_service.html#adfe17c411ffeddeb7539037d37651ca3":[58,0,44,62],
-"struct___remmina_plugin_service.html#ae012b23105a049ef8b0fc2257f122c81":[58,0,44,101],
-"struct___remmina_plugin_service.html#ae3d1b8239f999ebc0a3b8f5e8754c66d":[58,0,44,9],
-"struct___remmina_plugin_service.html#ae431bee04c6b084082394687909c83e5":[58,0,44,29],
-"struct___remmina_plugin_service.html#ae816daa96fb7b68417abf36f7149b30c":[58,0,44,108],
-"struct___remmina_plugin_service.html#ae95121f8f944c058d4f0683073f79183":[58,0,44,73],
-"struct___remmina_plugin_service.html#ae9534eb041bf01feee73cb45d946d766":[58,0,44,103],
-"struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed":[58,0,44,124],
-"struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662":[58,0,44,20],
-"struct___remmina_plugin_service.html#aeaf95501d1d2ce27589cfdf69511009c":[58,0,44,47],
-"struct___remmina_plugin_service.html#aeb9ee3ae6a1b3e4b2db9f117a1a9930d":[58,0,44,23],
-"struct___remmina_plugin_service.html#aebb9e15f3823f09a12e6c0035873081f":[58,0,44,119],
-"struct___remmina_plugin_service.html#aecf866eced70d5e15969149920337314":[58,0,44,0],
-"struct___remmina_plugin_service.html#aedfb537d4881ac3df0794e42c33c9f3e":[58,0,44,109],
-"struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b":[58,0,44,54],
-"struct___remmina_plugin_service.html#af45af14b2b083a7093f36b8cafda1cee":[58,0,44,34],
-"struct___remmina_plugin_service.html#af4ca9691a3090184879920f3e408154e":[58,0,44,80],
-"struct___remmina_plugin_service.html#afe3c32a421cd5dcc735b99318ff8844a":[58,0,44,17],
-"struct___remmina_plugin_service.html#afea11ab21bd7e00addf5a3696519be6d":[58,0,44,125],
-"struct___remmina_plugin_sftp_data.html":[58,0,45],
-"struct___remmina_plugin_sftp_data.html#ac68cbef0e07b34da2b0dc8e5f022bda5":[58,0,45,2],
-"struct___remmina_plugin_sftp_data.html#aef8517c9af56f33ac9933815930e335f":[58,0,45,0],
-"struct___remmina_plugin_sftp_data.html#afa1aca33155a3bee87984568651bc5ab":[58,0,45,1],
-"struct___remmina_plugin_spice_data.html":[58,0,46],
-"struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69":[58,0,46,6],
-"struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02":[58,0,46,0],
-"struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f":[58,0,46,7],
-"struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad":[58,0,46,1],
-"struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781":[58,0,46,5],
-"struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6":[58,0,46,2],
-"struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633":[58,0,46,8],
-"struct___remmina_plugin_spice_data.html#a9207addf2a7b2fea9bd8b3e7916aa28e":[58,0,46,4],
-"struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c":[58,0,46,3],
-"struct___remmina_plugin_spice_xfer_widgets.html":[58,0,47],
-"struct___remmina_plugin_spice_xfer_widgets.html#a05fea9bde521ffcb18f9f8a677a73716":[58,0,47,4],
-"struct___remmina_plugin_spice_xfer_widgets.html#a3ccf00d4d7b46e182c31b7d1f568911a":[58,0,47,2],
-"struct___remmina_plugin_spice_xfer_widgets.html#a46d74da3885207d20372d13a2f4b181c":[58,0,47,1],
-"struct___remmina_plugin_spice_xfer_widgets.html#ad05a8f17fb01787453d6e29dc881cbfe":[58,0,47,3],
-"struct___remmina_plugin_spice_xfer_widgets.html#adfef2a32ccfa7152eed3b8e65b48bb53":[58,0,47,0],
-"struct___remmina_plugin_ssh_data.html":[58,0,48],
-"struct___remmina_plugin_ssh_data.html#a274af863ce43b84bb4b0624cecc02a14":[58,0,48,5],
-"struct___remmina_plugin_ssh_data.html#a56949d65fae179813e5af5e01ee34967":[58,0,48,2],
-"struct___remmina_plugin_ssh_data.html#a9e34d029c0a2b22affd19ae005e541ae":[58,0,48,3],
-"struct___remmina_plugin_ssh_data.html#a9ee4bcd1a586ebaab74b062d2d40e563":[58,0,48,1],
-"struct___remmina_plugin_ssh_data.html#aacebb7f6d617f5a753db5ceb450de45e":[58,0,48,4],
-"struct___remmina_plugin_ssh_data.html#ab36f87793a1133773277f3ab2595fb8f":[58,0,48,0],
-"struct___remmina_plugin_ssh_data.html#af7d7b1e2393255bf247b940c5f7d4a91":[58,0,48,6],
-"struct___remmina_plugin_vnc_coordinates.html":[58,0,49],
-"struct___remmina_plugin_vnc_coordinates.html#a33c99179134cf900b66103767766ed3a":[58,0,49,0],
-"struct___remmina_plugin_vnc_coordinates.html#ad385abd59c1f49bdb244fd679efb5b3e":[58,0,49,1],
-"struct___remmina_plugin_vnc_cuttext_param.html":[58,0,50],
-"struct___remmina_plugin_vnc_cuttext_param.html#a3623cf203470ce741397e972fb12ab76":[58,0,50,2],
-"struct___remmina_plugin_vnc_cuttext_param.html#a3acb975cf5fb33970f68bed221978a09":[58,0,50,0],
-"struct___remmina_plugin_vnc_cuttext_param.html#a435d7b845e1d90c3bfbe5e5a7be19b30":[58,0,50,1],
-"struct___remmina_plugin_vnc_data.html":[58,0,51],
-"struct___remmina_plugin_vnc_data.html#a0453c0a0676675e91ba19318dc9b06e0":[58,0,51,10],
-"struct___remmina_plugin_vnc_data.html#a09a73e5d8e44a505154432e91cc8af4e":[58,0,51,19],
-"struct___remmina_plugin_vnc_data.html#a0c3efe656bbe8ce7a9216f121972b2fe":[58,0,51,23],
-"struct___remmina_plugin_vnc_data.html#a0e175ab5a31b720d9d7dfc6923ce3c6a":[58,0,51,27],
-"struct___remmina_plugin_vnc_data.html#a14aaefd3fdb0038689972d672a87f6d2":[58,0,51,17],
-"struct___remmina_plugin_vnc_data.html#a2958d10774cc6fc28a0bfa0b1c843095":[58,0,51,24],
-"struct___remmina_plugin_vnc_data.html#a33bc751b1d5728b624bfa57814504f90":[58,0,51,4],
-"struct___remmina_plugin_vnc_data.html#a3c4413fdc098cf2dd9a1ff336c20356e":[58,0,51,18],
-"struct___remmina_plugin_vnc_data.html#a3c589814c8c21221fc90b98e22e38714":[58,0,51,22],
-"struct___remmina_plugin_vnc_data.html#a4047890129d7177dc5f813f2947e7a3c":[58,0,51,3],
-"struct___remmina_plugin_vnc_data.html#a41dc885437b90c87b6a8b4367b0ba63c":[58,0,51,9],
-"struct___remmina_plugin_vnc_data.html#a4de43e091ed0b511921b87f2d456e990":[58,0,51,15],
-"struct___remmina_plugin_vnc_data.html#a5412ada4c656d0053f0656bed890c030":[58,0,51,20],
-"struct___remmina_plugin_vnc_data.html#a5b17067fb2b9437f1fdf607334dfade3":[58,0,51,1],
-"struct___remmina_plugin_vnc_data.html#a5b85e81358d36bc4772b95cb9856e2ca":[58,0,51,25],
-"struct___remmina_plugin_vnc_data.html#a5d655f538f7a29657c664bdd0117dcfb":[58,0,51,12],
-"struct___remmina_plugin_vnc_data.html#a5f8bcbfe873d4949852e9624e1c43063":[58,0,51,28],
-"struct___remmina_plugin_vnc_data.html#a625ea21fb2d92cb8489d3c9e5a2477ea":[58,0,51,26],
-"struct___remmina_plugin_vnc_data.html#a673281e9b313ad358b1a426dcf6238c2":[58,0,51,13],
-"struct___remmina_plugin_vnc_data.html#a782a902d036e12eb08bfcd1006c12b97":[58,0,51,0],
-"struct___remmina_plugin_vnc_data.html#a824b3ab6d51d0ba65abdbd0e788edb89":[58,0,51,2],
-"struct___remmina_plugin_vnc_data.html#a8c3e9e03bc8b3ed04ee93a2c0281b5c6":[58,0,51,16],
-"struct___remmina_plugin_vnc_data.html#aaee126db00e50ad613a6c8ae032ba3b2":[58,0,51,6],
-"struct___remmina_plugin_vnc_data.html#ab105fe07330946ed3687ad2d06fabe95":[58,0,51,7],
-"struct___remmina_plugin_vnc_data.html#ac4e1f4b6fc95c31896cc50f315312f93":[58,0,51,21],
-"struct___remmina_plugin_vnc_data.html#acf12d2c89046160dddcae35af84e5e57":[58,0,51,8],
-"struct___remmina_plugin_vnc_data.html#aeae081d32acaa79294cba7adaf6c57dd":[58,0,51,14],
-"struct___remmina_plugin_vnc_data.html#af7838da89b30d194de8d5571e2130364":[58,0,51,11],
-"struct___remmina_plugin_vnc_data.html#af834392929e0be100534bcc4a4d6df3c":[58,0,51,5],
-"struct___remmina_plugin_vnc_event.html":[58,0,52],
-"struct___remmina_plugin_vnc_event.html#a03809ddab0aea8b6d2796641d4ccda32":[58,0,52,0],
-"struct___remmina_plugin_vnc_event.html#a0ffbaa26908fd25e653dfaf5ad8ccff0":[58,0,52,2],
-"struct___remmina_plugin_vnc_event.html#a264ea1e41624de1e4a0e9cad031f0ac8":[58,0,52,6],
-"struct___remmina_plugin_vnc_event.html#a35d3190915553df1cfc65fb951403c11":[58,0,52,10],
-"struct___remmina_plugin_vnc_event.html#a54d7d71d502dae3182d2dfd96855f4d8":[58,0,52,3],
-"struct___remmina_plugin_vnc_event.html#a66390bbb63e42d25f8fa8e0be7f7dee8":[58,0,52,9],
-"struct___remmina_plugin_vnc_event.html#a79891d24c0e6257efceeefb3c10d8c65":[58,0,52,7],
-"struct___remmina_plugin_vnc_event.html#a9160c64481a1f56984c2f33785b2bf07":[58,0,52,5],
-"struct___remmina_plugin_vnc_event.html#ae2a04bad3d386a453554a431f9e9ad87":[58,0,52,4],
-"struct___remmina_plugin_vnc_event.html#ae39d5dcfc76eb2ced7b3cf0d9f963165":[58,0,52,8],
-"struct___remmina_plugin_vnc_event.html#af3990101571bcf27e9f69fd5835c5115":[58,0,52,1],
-"struct___remmina_plugin_w_w_w_data.html":[58,0,53],
-"struct___remmina_plugin_w_w_w_data.html#a22010474535695604f1e05498e726f3e":[58,0,53,2],
-"struct___remmina_plugin_w_w_w_data.html#a32adefd1fb55dd7237b907923d2a3690":[58,0,53,11],
-"struct___remmina_plugin_w_w_w_data.html#a3f740cb467c00cb8f17ff2546498fa54":[58,0,53,9],
-"struct___remmina_plugin_w_w_w_data.html#a6d2341e2d7c157b0ff64835d1ade6fbb":[58,0,53,10],
-"struct___remmina_plugin_w_w_w_data.html#a6ff4ea7c6ceb2351c6248427cf83a4db":[58,0,53,1],
-"struct___remmina_plugin_w_w_w_data.html#a80b04541339086a453fad32295806f84":[58,0,53,6],
-"struct___remmina_plugin_w_w_w_data.html#a9d54a3dc838528c104eaea91d4f777ab":[58,0,53,4],
-"struct___remmina_plugin_w_w_w_data.html#aa3e07f92f32ee3bab1b0e33c33e619db":[58,0,53,5],
-"struct___remmina_plugin_w_w_w_data.html#aa8ef80ab8bb8cae8d56890720dd58959":[58,0,53,3],
-"struct___remmina_plugin_w_w_w_data.html#aaaf9e6e616dea9d366b151e575ddedcd":[58,0,53,0],
-"struct___remmina_plugin_w_w_w_data.html#ab4e4fcc5e49437cb5c2c1d949aaa9436":[58,0,53,7],
-"struct___remmina_plugin_w_w_w_data.html#ac7390cf88e14b015713ea1f0980909f0":[58,0,53,8],
-"struct___remmina_plugin_x2_go_data.html":[58,0,54],
-"struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393":[58,0,54,4],
-"struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2":[58,0,54,5],
-"struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a":[58,0,54,1],
-"struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022":[58,0,54,8],
-"struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e":[58,0,54,0],
-"struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361":[58,0,54,3],
-"struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe":[58,0,54,6],
-"struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5":[58,0,54,2],
-"struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916":[58,0,54,7],
-"struct___remmina_pref.html":[58,0,55],
-"struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133":[58,0,55,73],
-"struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef":[58,0,55,11],
-"struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f":[58,0,55,66],
-"struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65":[58,0,55,26],
-"struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e":[58,0,55,46],
-"struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f":[58,0,55,53],
-"struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7":[58,0,55,51],
-"struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7":[58,0,55,41],
-"struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005":[58,0,55,38],
-"struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209":[58,0,55,60],
-"struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7":[58,0,55,65],
-"struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765":[58,0,55,59],
-"struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0":[58,0,55,63],
-"struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972":[58,0,55,85],
-"struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203":[58,0,55,67],
-"struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a":[58,0,55,52],
-"struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95":[58,0,55,0],
-"struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8":[58,0,55,5],
-"struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc":[58,0,55,54],
-"struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356":[58,0,55,21]
+"struct___remmina_plugin_service.html#a5a3ff49d651bc4f82fab2ca534bc3100":[58,0,43,96],
+"struct___remmina_plugin_service.html#a5cb9cccadb5fea7d9925e10ad4c14316":[58,0,43,4],
+"struct___remmina_plugin_service.html#a6135fbf46efacb8e70c5d212b6d97308":[58,0,43,93],
+"struct___remmina_plugin_service.html#a63422af287a04791e1bed20571bd4638":[58,0,43,25],
+"struct___remmina_plugin_service.html#a63683e6046384d902a573e150801e0d3":[58,0,43,60],
+"struct___remmina_plugin_service.html#a6421cc4cd8c2175d769ba5c24a879517":[58,0,43,1],
+"struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc":[58,0,43,10],
+"struct___remmina_plugin_service.html#a6954022faee29280f32c5314243d57e8":[58,0,43,98],
+"struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f":[58,0,43,18],
+"struct___remmina_plugin_service.html#a7120dead43af37f0128ef273aaa99524":[58,0,43,126],
+"struct___remmina_plugin_service.html#a71ec795b6643f1d0aec1a18894eacbd1":[58,0,43,19],
+"struct___remmina_plugin_service.html#a734f491f20072acdcbebb41e36bafe2f":[58,0,43,38],
+"struct___remmina_plugin_service.html#a73fc6117e08cdaabf28d580d144002ac":[58,0,43,99],
+"struct___remmina_plugin_service.html#a74eadbc0cfa97dbc6b66429c1c150998":[58,0,43,84],
+"struct___remmina_plugin_service.html#a7754349ee8199e1d1c5feb2ede8af4cb":[58,0,43,100],
+"struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1":[58,0,43,66],
+"struct___remmina_plugin_service.html#a7c49089bbeae502aae8da63aada22d78":[58,0,43,120],
+"struct___remmina_plugin_service.html#a7c5de526e0adaee6df2654987d92a834":[58,0,43,51],
+"struct___remmina_plugin_service.html#a7cfa21056b4b906e85a463598a210925":[58,0,43,111],
+"struct___remmina_plugin_service.html#a7d17d6869730b103237558b931184ac6":[58,0,43,112],
+"struct___remmina_plugin_service.html#a810268861a25b7794619acc0a8a15209":[58,0,43,5],
+"struct___remmina_plugin_service.html#a832a6822f6aa011f476300d14e738d72":[58,0,43,65],
+"struct___remmina_plugin_service.html#a83e35d80f04cb3d6a8cc883f6a089a24":[58,0,43,50],
+"struct___remmina_plugin_service.html#a83f3c05d16949a06cdddb5c7432b5053":[58,0,43,35],
+"struct___remmina_plugin_service.html#a8556ff64729b2ab223ec84286aa85aa1":[58,0,43,102],
+"struct___remmina_plugin_service.html#a860dc4e2fc1479ec1cbdcc53236df9e9":[58,0,43,30],
+"struct___remmina_plugin_service.html#a881a79477d6e122c0aed7d5528ab6b9a":[58,0,43,37],
+"struct___remmina_plugin_service.html#a8cc8cc627e22e71e257afa9c74d373ef":[58,0,43,24],
+"struct___remmina_plugin_service.html#a8d1c34496a6def21e5ad7d871cd581b5":[58,0,43,49],
+"struct___remmina_plugin_service.html#a8dd2494f449abd9b0c532e69a7aa4057":[58,0,43,40],
+"struct___remmina_plugin_service.html#a956bb502b45a484a22281ca96708beb2":[58,0,43,28],
+"struct___remmina_plugin_service.html#a997a36825f2338b8e06bcd59becef61b":[58,0,43,21],
+"struct___remmina_plugin_service.html#a99ea58f6bc0e2a67cc756e66f954c9b8":[58,0,43,6],
+"struct___remmina_plugin_service.html#a9a91159126712a096665ec42295e42e1":[58,0,43,94],
+"struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704":[58,0,43,45],
+"struct___remmina_plugin_service.html#a9e481e56c9970b741a109c0af04c650d":[58,0,43,48],
+"struct___remmina_plugin_service.html#aa129753441dbfb630cbdb92e447f1d1e":[58,0,43,76],
+"struct___remmina_plugin_service.html#aa159850f20499e5bc1067f533d2fa820":[58,0,43,42],
+"struct___remmina_plugin_service.html#aa305e6b2466c056e61354bfdd833275f":[58,0,43,114],
+"struct___remmina_plugin_service.html#aa413711beeac32a453068c0faf75f164":[58,0,43,8],
+"struct___remmina_plugin_service.html#aaa37f5061689c3663087a19f598e550b":[58,0,43,52],
+"struct___remmina_plugin_service.html#aaadab3f5fde957f5faa7ee6347bb1c6d":[58,0,43,77],
+"struct___remmina_plugin_service.html#aaf43a617b530bc6d4c44c52432f8b5f1":[58,0,43,107],
+"struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6":[58,0,43,71],
+"struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f":[58,0,43,70],
+"struct___remmina_plugin_service.html#ab8bbe7ce317cb9e97da8bf0e34459030":[58,0,43,36],
+"struct___remmina_plugin_service.html#aba59c35b478bad40df46cc94023901ee":[58,0,43,81],
+"struct___remmina_plugin_service.html#abaf7f57e2336f6e5c257e9c30fedc047":[58,0,43,69],
+"struct___remmina_plugin_service.html#abb85b1a32dbf23822400111c30d45290":[58,0,43,26],
+"struct___remmina_plugin_service.html#abd51e82b9296d57abd324aecbf243137":[58,0,43,122],
+"struct___remmina_plugin_service.html#abfb79da3d96ca4aa219eae9c73b0b53f":[58,0,43,44],
+"struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34":[58,0,43,63],
+"struct___remmina_plugin_service.html#ac432221a82ead6babe045cbf18061a0b":[58,0,43,57],
+"struct___remmina_plugin_service.html#ac892dd297fae87868752a1f86e07937d":[58,0,43,55],
+"struct___remmina_plugin_service.html#ac8dab22a850ab394e261bd8d013dc5a3":[58,0,43,56],
+"struct___remmina_plugin_service.html#ac929847020ee699a60771167dae3936b":[58,0,43,27],
+"struct___remmina_plugin_service.html#ace09e4e9fed471465e1a93a716547c2c":[58,0,43,78],
+"struct___remmina_plugin_service.html#ad0c0e810cad311a80cb73746bc299895":[58,0,43,12],
+"struct___remmina_plugin_service.html#ad0f29c76e2ec9ea145faab2313e94749":[58,0,43,74],
+"struct___remmina_plugin_service.html#ad1409c74574c0fc1721b0cbd9f0e8ea2":[58,0,43,105],
+"struct___remmina_plugin_service.html#ad1a15eb04ea5b95e9920df80e6e5c467":[58,0,43,87],
+"struct___remmina_plugin_service.html#ad7957cfe691b8ca187c974deb3309caf":[58,0,43,82],
+"struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174":[58,0,43,53],
+"struct___remmina_plugin_service.html#add5c06ac9c7a5fb3b3459731ffc8e964":[58,0,43,32],
+"struct___remmina_plugin_service.html#add6cf489a59e5d81f71c4425a039c47f":[58,0,43,115],
+"struct___remmina_plugin_service.html#adf255b7ceaec6a51fc9269cf824a02ce":[58,0,43,43],
+"struct___remmina_plugin_service.html#adfe17c411ffeddeb7539037d37651ca3":[58,0,43,62],
+"struct___remmina_plugin_service.html#ae012b23105a049ef8b0fc2257f122c81":[58,0,43,101],
+"struct___remmina_plugin_service.html#ae3d1b8239f999ebc0a3b8f5e8754c66d":[58,0,43,9],
+"struct___remmina_plugin_service.html#ae431bee04c6b084082394687909c83e5":[58,0,43,29],
+"struct___remmina_plugin_service.html#ae816daa96fb7b68417abf36f7149b30c":[58,0,43,108],
+"struct___remmina_plugin_service.html#ae95121f8f944c058d4f0683073f79183":[58,0,43,73],
+"struct___remmina_plugin_service.html#ae9534eb041bf01feee73cb45d946d766":[58,0,43,103],
+"struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed":[58,0,43,124],
+"struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662":[58,0,43,20],
+"struct___remmina_plugin_service.html#aeaf95501d1d2ce27589cfdf69511009c":[58,0,43,47],
+"struct___remmina_plugin_service.html#aeb9ee3ae6a1b3e4b2db9f117a1a9930d":[58,0,43,23],
+"struct___remmina_plugin_service.html#aebb9e15f3823f09a12e6c0035873081f":[58,0,43,119],
+"struct___remmina_plugin_service.html#aecf866eced70d5e15969149920337314":[58,0,43,0],
+"struct___remmina_plugin_service.html#aedfb537d4881ac3df0794e42c33c9f3e":[58,0,43,109],
+"struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b":[58,0,43,54],
+"struct___remmina_plugin_service.html#af45af14b2b083a7093f36b8cafda1cee":[58,0,43,34],
+"struct___remmina_plugin_service.html#af4ca9691a3090184879920f3e408154e":[58,0,43,80],
+"struct___remmina_plugin_service.html#afe3c32a421cd5dcc735b99318ff8844a":[58,0,43,17],
+"struct___remmina_plugin_service.html#afea11ab21bd7e00addf5a3696519be6d":[58,0,43,125],
+"struct___remmina_plugin_sftp_data.html":[58,0,44],
+"struct___remmina_plugin_sftp_data.html#ac68cbef0e07b34da2b0dc8e5f022bda5":[58,0,44,2],
+"struct___remmina_plugin_sftp_data.html#aef8517c9af56f33ac9933815930e335f":[58,0,44,0],
+"struct___remmina_plugin_sftp_data.html#afa1aca33155a3bee87984568651bc5ab":[58,0,44,1],
+"struct___remmina_plugin_spice_data.html":[58,0,45],
+"struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69":[58,0,45,6],
+"struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02":[58,0,45,0],
+"struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f":[58,0,45,7],
+"struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad":[58,0,45,1],
+"struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781":[58,0,45,5],
+"struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6":[58,0,45,2],
+"struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633":[58,0,45,8],
+"struct___remmina_plugin_spice_data.html#a9207addf2a7b2fea9bd8b3e7916aa28e":[58,0,45,4],
+"struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c":[58,0,45,3],
+"struct___remmina_plugin_spice_xfer_widgets.html":[58,0,46],
+"struct___remmina_plugin_spice_xfer_widgets.html#a05fea9bde521ffcb18f9f8a677a73716":[58,0,46,4],
+"struct___remmina_plugin_spice_xfer_widgets.html#a3ccf00d4d7b46e182c31b7d1f568911a":[58,0,46,2],
+"struct___remmina_plugin_spice_xfer_widgets.html#a46d74da3885207d20372d13a2f4b181c":[58,0,46,1],
+"struct___remmina_plugin_spice_xfer_widgets.html#ad05a8f17fb01787453d6e29dc881cbfe":[58,0,46,3],
+"struct___remmina_plugin_spice_xfer_widgets.html#adfef2a32ccfa7152eed3b8e65b48bb53":[58,0,46,0],
+"struct___remmina_plugin_ssh_data.html":[58,0,47],
+"struct___remmina_plugin_ssh_data.html#a274af863ce43b84bb4b0624cecc02a14":[58,0,47,5],
+"struct___remmina_plugin_ssh_data.html#a56949d65fae179813e5af5e01ee34967":[58,0,47,2],
+"struct___remmina_plugin_ssh_data.html#a9e34d029c0a2b22affd19ae005e541ae":[58,0,47,3],
+"struct___remmina_plugin_ssh_data.html#a9ee4bcd1a586ebaab74b062d2d40e563":[58,0,47,1],
+"struct___remmina_plugin_ssh_data.html#aacebb7f6d617f5a753db5ceb450de45e":[58,0,47,4],
+"struct___remmina_plugin_ssh_data.html#ab36f87793a1133773277f3ab2595fb8f":[58,0,47,0],
+"struct___remmina_plugin_ssh_data.html#af7d7b1e2393255bf247b940c5f7d4a91":[58,0,47,6],
+"struct___remmina_plugin_vnc_coordinates.html":[58,0,48],
+"struct___remmina_plugin_vnc_coordinates.html#a33c99179134cf900b66103767766ed3a":[58,0,48,0],
+"struct___remmina_plugin_vnc_coordinates.html#ad385abd59c1f49bdb244fd679efb5b3e":[58,0,48,1],
+"struct___remmina_plugin_vnc_cuttext_param.html":[58,0,49],
+"struct___remmina_plugin_vnc_cuttext_param.html#a3623cf203470ce741397e972fb12ab76":[58,0,49,2],
+"struct___remmina_plugin_vnc_cuttext_param.html#a3acb975cf5fb33970f68bed221978a09":[58,0,49,0],
+"struct___remmina_plugin_vnc_cuttext_param.html#a435d7b845e1d90c3bfbe5e5a7be19b30":[58,0,49,1],
+"struct___remmina_plugin_vnc_data.html":[58,0,50],
+"struct___remmina_plugin_vnc_data.html#a0453c0a0676675e91ba19318dc9b06e0":[58,0,50,10],
+"struct___remmina_plugin_vnc_data.html#a09a73e5d8e44a505154432e91cc8af4e":[58,0,50,19],
+"struct___remmina_plugin_vnc_data.html#a0c3efe656bbe8ce7a9216f121972b2fe":[58,0,50,23],
+"struct___remmina_plugin_vnc_data.html#a0e175ab5a31b720d9d7dfc6923ce3c6a":[58,0,50,27],
+"struct___remmina_plugin_vnc_data.html#a14aaefd3fdb0038689972d672a87f6d2":[58,0,50,17],
+"struct___remmina_plugin_vnc_data.html#a2958d10774cc6fc28a0bfa0b1c843095":[58,0,50,24],
+"struct___remmina_plugin_vnc_data.html#a33bc751b1d5728b624bfa57814504f90":[58,0,50,4],
+"struct___remmina_plugin_vnc_data.html#a3c4413fdc098cf2dd9a1ff336c20356e":[58,0,50,18],
+"struct___remmina_plugin_vnc_data.html#a3c589814c8c21221fc90b98e22e38714":[58,0,50,22],
+"struct___remmina_plugin_vnc_data.html#a4047890129d7177dc5f813f2947e7a3c":[58,0,50,3],
+"struct___remmina_plugin_vnc_data.html#a41dc885437b90c87b6a8b4367b0ba63c":[58,0,50,9],
+"struct___remmina_plugin_vnc_data.html#a4de43e091ed0b511921b87f2d456e990":[58,0,50,15],
+"struct___remmina_plugin_vnc_data.html#a5412ada4c656d0053f0656bed890c030":[58,0,50,20],
+"struct___remmina_plugin_vnc_data.html#a5b17067fb2b9437f1fdf607334dfade3":[58,0,50,1],
+"struct___remmina_plugin_vnc_data.html#a5b85e81358d36bc4772b95cb9856e2ca":[58,0,50,25],
+"struct___remmina_plugin_vnc_data.html#a5d655f538f7a29657c664bdd0117dcfb":[58,0,50,12],
+"struct___remmina_plugin_vnc_data.html#a5f8bcbfe873d4949852e9624e1c43063":[58,0,50,28],
+"struct___remmina_plugin_vnc_data.html#a625ea21fb2d92cb8489d3c9e5a2477ea":[58,0,50,26],
+"struct___remmina_plugin_vnc_data.html#a673281e9b313ad358b1a426dcf6238c2":[58,0,50,13],
+"struct___remmina_plugin_vnc_data.html#a782a902d036e12eb08bfcd1006c12b97":[58,0,50,0],
+"struct___remmina_plugin_vnc_data.html#a824b3ab6d51d0ba65abdbd0e788edb89":[58,0,50,2],
+"struct___remmina_plugin_vnc_data.html#a8c3e9e03bc8b3ed04ee93a2c0281b5c6":[58,0,50,16],
+"struct___remmina_plugin_vnc_data.html#aaee126db00e50ad613a6c8ae032ba3b2":[58,0,50,6],
+"struct___remmina_plugin_vnc_data.html#ab105fe07330946ed3687ad2d06fabe95":[58,0,50,7],
+"struct___remmina_plugin_vnc_data.html#ac4e1f4b6fc95c31896cc50f315312f93":[58,0,50,21],
+"struct___remmina_plugin_vnc_data.html#acf12d2c89046160dddcae35af84e5e57":[58,0,50,8],
+"struct___remmina_plugin_vnc_data.html#aeae081d32acaa79294cba7adaf6c57dd":[58,0,50,14],
+"struct___remmina_plugin_vnc_data.html#af7838da89b30d194de8d5571e2130364":[58,0,50,11],
+"struct___remmina_plugin_vnc_data.html#af834392929e0be100534bcc4a4d6df3c":[58,0,50,5],
+"struct___remmina_plugin_vnc_event.html":[58,0,51],
+"struct___remmina_plugin_vnc_event.html#a03809ddab0aea8b6d2796641d4ccda32":[58,0,51,0],
+"struct___remmina_plugin_vnc_event.html#a0ffbaa26908fd25e653dfaf5ad8ccff0":[58,0,51,2],
+"struct___remmina_plugin_vnc_event.html#a264ea1e41624de1e4a0e9cad031f0ac8":[58,0,51,6],
+"struct___remmina_plugin_vnc_event.html#a35d3190915553df1cfc65fb951403c11":[58,0,51,10],
+"struct___remmina_plugin_vnc_event.html#a54d7d71d502dae3182d2dfd96855f4d8":[58,0,51,3],
+"struct___remmina_plugin_vnc_event.html#a66390bbb63e42d25f8fa8e0be7f7dee8":[58,0,51,9],
+"struct___remmina_plugin_vnc_event.html#a79891d24c0e6257efceeefb3c10d8c65":[58,0,51,7],
+"struct___remmina_plugin_vnc_event.html#a9160c64481a1f56984c2f33785b2bf07":[58,0,51,5],
+"struct___remmina_plugin_vnc_event.html#ae2a04bad3d386a453554a431f9e9ad87":[58,0,51,4],
+"struct___remmina_plugin_vnc_event.html#ae39d5dcfc76eb2ced7b3cf0d9f963165":[58,0,51,8],
+"struct___remmina_plugin_vnc_event.html#af3990101571bcf27e9f69fd5835c5115":[58,0,51,1],
+"struct___remmina_plugin_w_w_w_data.html":[58,0,52],
+"struct___remmina_plugin_w_w_w_data.html#a22010474535695604f1e05498e726f3e":[58,0,52,2],
+"struct___remmina_plugin_w_w_w_data.html#a32adefd1fb55dd7237b907923d2a3690":[58,0,52,11],
+"struct___remmina_plugin_w_w_w_data.html#a3f740cb467c00cb8f17ff2546498fa54":[58,0,52,9],
+"struct___remmina_plugin_w_w_w_data.html#a6d2341e2d7c157b0ff64835d1ade6fbb":[58,0,52,10],
+"struct___remmina_plugin_w_w_w_data.html#a6ff4ea7c6ceb2351c6248427cf83a4db":[58,0,52,1],
+"struct___remmina_plugin_w_w_w_data.html#a80b04541339086a453fad32295806f84":[58,0,52,6],
+"struct___remmina_plugin_w_w_w_data.html#a9d54a3dc838528c104eaea91d4f777ab":[58,0,52,4],
+"struct___remmina_plugin_w_w_w_data.html#aa3e07f92f32ee3bab1b0e33c33e619db":[58,0,52,5],
+"struct___remmina_plugin_w_w_w_data.html#aa8ef80ab8bb8cae8d56890720dd58959":[58,0,52,3],
+"struct___remmina_plugin_w_w_w_data.html#aaaf9e6e616dea9d366b151e575ddedcd":[58,0,52,0],
+"struct___remmina_plugin_w_w_w_data.html#ab4e4fcc5e49437cb5c2c1d949aaa9436":[58,0,52,7],
+"struct___remmina_plugin_w_w_w_data.html#ac7390cf88e14b015713ea1f0980909f0":[58,0,52,8],
+"struct___remmina_plugin_x2_go_data.html":[58,0,53],
+"struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393":[58,0,53,4],
+"struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2":[58,0,53,5],
+"struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a":[58,0,53,1],
+"struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022":[58,0,53,8],
+"struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e":[58,0,53,0],
+"struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361":[58,0,53,3],
+"struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe":[58,0,53,6],
+"struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5":[58,0,53,2],
+"struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916":[58,0,53,7],
+"struct___remmina_pref.html":[58,0,54],
+"struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133":[58,0,54,69],
+"struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef":[58,0,54,11],
+"struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f":[58,0,54,62],
+"struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65":[58,0,54,26],
+"struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e":[58,0,54,42],
+"struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f":[58,0,54,49],
+"struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7":[58,0,54,47],
+"struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7":[58,0,54,37],
+"struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209":[58,0,54,56],
+"struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7":[58,0,54,61],
+"struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765":[58,0,54,55],
+"struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0":[58,0,54,59],
+"struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972":[58,0,54,81],
+"struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203":[58,0,54,63],
+"struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a":[58,0,54,48],
+"struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95":[58,0,54,0],
+"struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8":[58,0,54,5],
+"struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc":[58,0,54,50],
+"struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356":[58,0,54,21],
+"struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c":[58,0,54,44],
+"struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5":[58,0,54,84],
+"struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4":[58,0,54,35],
+"struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b":[58,0,54,54],
+"struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f":[58,0,54,71],
+"struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b":[58,0,54,18],
+"struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51":[58,0,54,58],
+"struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d":[58,0,54,52],
+"struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17":[58,0,54,77],
+"struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457":[58,0,54,80],
+"struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22":[58,0,54,86],
+"struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd":[58,0,54,31],
+"struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37":[58,0,54,40],
+"struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df":[58,0,54,20],
+"struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449":[58,0,54,68],
+"struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222":[58,0,54,36],
+"struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c":[58,0,54,6],
+"struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc":[58,0,54,72],
+"struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797":[58,0,54,25],
+"struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9":[58,0,54,1],
+"struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677":[58,0,54,75],
+"struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095":[58,0,54,53],
+"struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8":[58,0,54,30],
+"struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5":[58,0,54,15],
+"struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd":[58,0,54,64],
+"struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c":[58,0,54,9],
+"struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8":[58,0,54,7],
+"struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b":[58,0,54,51],
+"struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd":[58,0,54,24],
+"struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6":[58,0,54,33],
+"struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6":[58,0,54,83],
+"struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255":[58,0,54,82],
+"struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011":[58,0,54,10],
+"struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e":[58,0,54,22],
+"struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f":[58,0,54,19],
+"struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c":[58,0,54,29],
+"struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568":[58,0,54,4],
+"struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259":[58,0,54,45],
+"struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad":[58,0,54,85],
+"struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f":[58,0,54,39],
+"struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b":[58,0,54,57],
+"struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5":[58,0,54,16],
+"struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365":[58,0,54,8],
+"struct___remmina_pref.html#aac4f34f297a653052752b571777bc001":[58,0,54,60],
+"struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676":[58,0,54,41]
};
diff --git a/public/navtreeindex14.js b/public/navtreeindex14.js
index d92244e40..172da63a1 100644
--- a/public/navtreeindex14.js
+++ b/public/navtreeindex14.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX14 =
{
-"struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c":[58,0,55,48],
-"struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5":[58,0,55,88],
-"struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4":[58,0,55,35],
-"struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b":[58,0,55,58],
-"struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f":[58,0,55,75],
-"struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b":[58,0,55,18],
-"struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51":[58,0,55,62],
-"struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d":[58,0,55,56],
-"struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17":[58,0,55,81],
-"struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457":[58,0,55,84],
-"struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22":[58,0,55,90],
-"struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6":[58,0,55,39],
-"struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd":[58,0,55,31],
-"struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37":[58,0,55,44],
-"struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df":[58,0,55,20],
-"struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449":[58,0,55,72],
-"struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222":[58,0,55,36],
-"struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c":[58,0,55,6],
-"struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc":[58,0,55,76],
-"struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797":[58,0,55,25],
-"struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9":[58,0,55,1],
-"struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677":[58,0,55,79],
-"struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095":[58,0,55,57],
-"struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8":[58,0,55,30],
-"struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5":[58,0,55,15],
-"struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd":[58,0,55,68],
-"struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c":[58,0,55,9],
-"struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8":[58,0,55,7],
-"struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06":[58,0,55,40],
-"struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b":[58,0,55,55],
-"struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd":[58,0,55,24],
-"struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6":[58,0,55,33],
-"struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6":[58,0,55,87],
-"struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255":[58,0,55,86],
-"struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011":[58,0,55,10],
-"struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e":[58,0,55,22],
-"struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f":[58,0,55,19],
-"struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c":[58,0,55,29],
-"struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568":[58,0,55,4],
-"struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259":[58,0,55,49],
-"struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad":[58,0,55,89],
-"struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f":[58,0,55,43],
-"struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b":[58,0,55,61],
-"struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5":[58,0,55,16],
-"struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365":[58,0,55,8],
-"struct___remmina_pref.html#aac4f34f297a653052752b571777bc001":[58,0,55,64],
-"struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676":[58,0,55,45],
-"struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d":[58,0,55,12],
-"struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1":[58,0,55,80],
-"struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644":[58,0,55,42],
-"struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792":[58,0,55,2],
-"struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651":[58,0,55,77],
-"struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0":[58,0,55,34],
-"struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e":[58,0,55,27],
-"struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b":[58,0,55,82],
-"struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21":[58,0,55,17],
-"struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd":[58,0,55,3],
-"struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4":[58,0,55,37],
-"struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8":[58,0,55,69],
-"struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6":[58,0,55,47],
-"struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101":[58,0,55,23],
-"struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61":[58,0,55,74],
-"struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47":[58,0,55,50],
-"struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35":[58,0,55,13],
-"struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd":[58,0,55,28],
-"struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875":[58,0,55,32],
-"struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468":[58,0,55,71],
-"struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972":[58,0,55,78],
-"struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400":[58,0,55,70],
-"struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850":[58,0,55,83],
-"struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c":[58,0,55,14],
-"struct___remmina_pref_dialog.html":[58,0,56],
-"struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb":[58,0,56,8],
-"struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d":[58,0,56,80],
-"struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11":[58,0,56,86],
-"struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97":[58,0,56,100],
-"struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be":[58,0,56,9],
-"struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5":[58,0,56,27],
-"struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6":[58,0,56,20],
-"struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3":[58,0,56,83],
-"struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f":[58,0,56,2],
-"struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb":[58,0,56,50],
-"struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37":[58,0,56,14],
-"struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae":[58,0,56,65],
-"struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6":[58,0,56,88],
-"struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997":[58,0,56,10],
-"struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119":[58,0,56,33],
-"struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb":[58,0,56,87],
-"struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485":[58,0,56,51],
-"struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018":[58,0,56,95],
-"struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196":[58,0,56,74],
-"struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a":[58,0,56,45],
-"struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2":[58,0,56,5],
-"struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d":[58,0,56,84],
-"struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c":[58,0,56,81],
-"struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028":[58,0,56,31],
-"struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6":[58,0,56,22],
-"struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd":[58,0,56,24],
-"struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb":[58,0,56,97],
-"struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8":[58,0,56,39],
-"struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6":[58,0,56,59],
-"struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d":[58,0,56,42],
-"struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f":[58,0,56,25],
-"struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3":[58,0,56,47],
-"struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972":[58,0,56,63],
-"struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193":[58,0,56,94],
-"struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876":[58,0,56,0],
-"struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c":[58,0,56,67],
-"struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d":[58,0,56,62],
-"struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de":[58,0,56,66],
-"struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e":[58,0,56,85],
-"struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980":[58,0,56,98],
-"struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab":[58,0,56,53],
-"struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32":[58,0,56,73],
-"struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826":[58,0,56,7],
-"struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94":[58,0,56,13],
-"struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571":[58,0,56,69],
-"struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903":[58,0,56,21],
-"struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c":[58,0,56,26],
-"struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40":[58,0,56,71],
-"struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0":[58,0,56,72],
-"struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c":[58,0,56,41],
-"struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b":[58,0,56,91],
-"struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714":[58,0,56,3],
-"struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb":[58,0,56,58],
-"struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c":[58,0,56,30],
-"struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531":[58,0,56,68],
-"struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061":[58,0,56,61],
-"struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877":[58,0,56,36],
-"struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811":[58,0,56,37],
-"struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97":[58,0,56,6],
-"struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3":[58,0,56,48],
-"struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa":[58,0,56,89],
-"struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2":[58,0,56,60],
-"struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb":[58,0,56,44],
-"struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2":[58,0,56,55],
-"struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35":[58,0,56,40],
-"struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59":[58,0,56,54],
-"struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0":[58,0,56,16],
-"struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3":[58,0,56,93],
-"struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7":[58,0,56,75],
-"struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a":[58,0,56,92],
-"struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2":[58,0,56,1],
-"struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3":[58,0,56,43],
-"struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6":[58,0,56,29],
-"struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5":[58,0,56,18],
-"struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412":[58,0,56,56],
-"struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc":[58,0,56,34],
-"struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123":[58,0,56,77],
-"struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b":[58,0,56,70],
-"struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46":[58,0,56,99],
-"struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a":[58,0,56,32],
-"struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb":[58,0,56,82],
-"struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912":[58,0,56,28],
-"struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca":[58,0,56,52],
-"struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008":[58,0,56,64],
-"struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87":[58,0,56,23],
-"struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d":[58,0,56,90],
-"struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a":[58,0,56,38],
-"struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9":[58,0,56,12],
-"struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4":[58,0,56,35],
-"struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c":[58,0,56,49],
-"struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189":[58,0,56,76],
-"struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8":[58,0,56,17],
-"struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1":[58,0,56,4],
-"struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27":[58,0,56,78],
-"struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74":[58,0,56,11],
-"struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c":[58,0,56,57],
-"struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327":[58,0,56,19],
-"struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb":[58,0,56,79],
-"struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172":[58,0,56,96],
-"struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f":[58,0,56,46],
-"struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0":[58,0,56,15],
-"struct___remmina_pref_dialog_priv.html":[58,0,57],
-"struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05":[58,0,57,0],
-"struct___remmina_pref_plugin.html":[58,0,58],
-"struct___remmina_pref_plugin.html#a31f24f29db7e806ccf65f19fb88133b0":[58,0,58,0],
-"struct___remmina_pref_plugin.html#a377073db6f59790bfc3f69c62d4715e4":[58,0,58,2],
-"struct___remmina_pref_plugin.html#a4a036be229f8b3797c3e0ad4913c7cdf":[58,0,58,1],
-"struct___remmina_pref_plugin.html#a5dcdfe2a1aa15b61834d0146a3367c3d":[58,0,58,6],
-"struct___remmina_pref_plugin.html#a9ea805605a462db2ce7912ef05a4fd9d":[58,0,58,4],
-"struct___remmina_pref_plugin.html#aab77d73c001e013228ed77b1418a210b":[58,0,58,3],
-"struct___remmina_pref_plugin.html#ade323f1200f3aae6e5b580c764467522":[58,0,58,5],
-"struct___remmina_protocol_feature.html":[58,0,59],
-"struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7":[58,0,59,4],
-"struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9":[58,0,59,7],
-"struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20":[58,0,59,0],
-"struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b":[58,0,59,2],
-"struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c":[58,0,59,6],
-"struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952":[58,0,59,1],
-"struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d":[58,0,59,3],
-"struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190":[58,0,59,5],
-"struct___remmina_protocol_plugin.html":[58,0,60],
-"struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2":[58,0,60,10],
-"struct___remmina_protocol_plugin.html#a3f3cd7ad27c78a1670de3f42414861ff":[58,0,60,19],
-"struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1":[58,0,60,2],
-"struct___remmina_protocol_plugin.html#a61bee777a81714c80bed22d0cf8e13ae":[58,0,60,5],
-"struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4":[58,0,60,12],
-"struct___remmina_protocol_plugin.html#a8a4c7d195e85a1428abf82e952ff4df3":[58,0,60,9],
-"struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7":[58,0,60,15],
-"struct___remmina_protocol_plugin.html#a9552c70a10eea2b8263dbc7d05e2fb10":[58,0,60,8],
-"struct___remmina_protocol_plugin.html#a9bac82016e8b61d3c63b2e427be3ec70":[58,0,60,4],
-"struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de":[58,0,60,14],
-"struct___remmina_protocol_plugin.html#aa5727804eb3f5cd4a4a40acb98df76bb":[58,0,60,16],
-"struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d":[58,0,60,1],
-"struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57":[58,0,60,18],
-"struct___remmina_protocol_plugin.html#ac783acfaf93007d0100bd02f1faff7f0":[58,0,60,17],
-"struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db":[58,0,60,0],
-"struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd":[58,0,60,13],
-"struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4":[58,0,60,7],
-"struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2":[58,0,60,3],
-"struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997":[58,0,60,11],
-"struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff":[58,0,60,6],
-"struct___remmina_protocol_setting.html":[58,0,61],
-"struct___remmina_protocol_setting.html#a55a12c6ed9ab21954208e0e83165f770":[58,0,61,4],
-"struct___remmina_protocol_setting.html#a6086b43049072a3a3245c4a45f43dbc5":[58,0,61,7],
-"struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9":[58,0,61,5],
-"struct___remmina_protocol_setting.html#a7a5b063deb126422c461203c074a3dc4":[58,0,61,1],
-"struct___remmina_protocol_setting.html#a94df87db138d4e44e81b3e6c99148ed3":[58,0,61,6],
-"struct___remmina_protocol_setting.html#ab434990a6fe70b7e8a4a8b11129527a6":[58,0,61,0],
-"struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857":[58,0,61,2],
-"struct___remmina_protocol_setting.html#ae1cc5b9d910f68aa5909e3cf483c1d1d":[58,0,61,3],
-"struct___remmina_protocol_setting_opt.html":[58,0,62],
-"struct___remmina_protocol_setting_opt.html#a30495a4edaa2dacfb0dfcb906d68deed":[58,0,62,1],
-"struct___remmina_protocol_setting_opt.html#a3bc14b4167bf3be572d404b941f15a20":[58,0,62,3],
-"struct___remmina_protocol_setting_opt.html#a4633900a166b397de7b8f276ac7e0fea":[58,0,62,2],
-"struct___remmina_protocol_setting_opt.html#a4d4d2d1c3aff12f60831e0b03afcd4dc":[58,0,62,0],
-"struct___remmina_protocol_setting_opt.html#a783e0ee287289146050b45add2f6d867":[58,0,62,4],
-"struct___remmina_protocol_setting_opt.html#a97876b0782030bdcba99839ba5e42f1a":[58,0,62,5],
-"struct___remmina_protocol_widget.html":[58,0,63],
-"struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6":[58,0,63,3],
-"struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc":[58,0,63,1],
-"struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c":[58,0,63,2],
-"struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67":[58,0,63,0],
-"struct___remmina_protocol_widget_class.html":[58,0,64],
-"struct___remmina_protocol_widget_class.html#a49409472ef2062977ac80f236de454d3":[58,0,64,5],
-"struct___remmina_protocol_widget_class.html#a5cf457e2e48c9c2b831b0c8a4f88c760":[58,0,64,0],
-"struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213":[58,0,64,2],
-"struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2":[58,0,64,4],
-"struct___remmina_protocol_widget_class.html#ac646886d6110e3050a48b6a29e183b2c":[58,0,64,3],
-"struct___remmina_protocol_widget_class.html#acbb1fd035466ac82e208e76adfaf9e99":[58,0,64,6],
-"struct___remmina_protocol_widget_class.html#afab4068813bba5630bed6b6000dacb1b":[58,0,64,1],
-"struct___remmina_protocol_widget_priv.html":[58,0,65],
-"struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e":[58,0,65,3],
-"struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec":[58,0,65,21],
-"struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7":[58,0,65,17],
-"struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f":[58,0,65,8],
-"struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0":[58,0,65,18],
-"struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116":[58,0,65,25],
-"struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e":[58,0,65,1]
+"struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d":[58,0,54,12],
+"struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1":[58,0,54,76],
+"struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644":[58,0,54,38],
+"struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792":[58,0,54,2],
+"struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651":[58,0,54,73],
+"struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0":[58,0,54,34],
+"struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e":[58,0,54,27],
+"struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b":[58,0,54,78],
+"struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21":[58,0,54,17],
+"struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd":[58,0,54,3],
+"struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8":[58,0,54,65],
+"struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6":[58,0,54,43],
+"struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101":[58,0,54,23],
+"struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61":[58,0,54,70],
+"struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47":[58,0,54,46],
+"struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35":[58,0,54,13],
+"struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd":[58,0,54,28],
+"struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875":[58,0,54,32],
+"struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468":[58,0,54,67],
+"struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972":[58,0,54,74],
+"struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400":[58,0,54,66],
+"struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850":[58,0,54,79],
+"struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c":[58,0,54,14],
+"struct___remmina_pref_dialog.html":[58,0,55],
+"struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb":[58,0,55,8],
+"struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d":[58,0,55,80],
+"struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11":[58,0,55,86],
+"struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97":[58,0,55,99],
+"struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be":[58,0,55,9],
+"struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5":[58,0,55,27],
+"struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6":[58,0,55,20],
+"struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3":[58,0,55,83],
+"struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f":[58,0,55,2],
+"struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb":[58,0,55,50],
+"struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37":[58,0,55,14],
+"struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae":[58,0,55,65],
+"struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6":[58,0,55,88],
+"struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997":[58,0,55,10],
+"struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119":[58,0,55,33],
+"struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb":[58,0,55,87],
+"struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485":[58,0,55,51],
+"struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018":[58,0,55,94],
+"struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196":[58,0,55,74],
+"struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a":[58,0,55,45],
+"struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2":[58,0,55,5],
+"struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d":[58,0,55,84],
+"struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c":[58,0,55,81],
+"struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028":[58,0,55,31],
+"struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6":[58,0,55,22],
+"struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd":[58,0,55,24],
+"struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb":[58,0,55,96],
+"struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8":[58,0,55,39],
+"struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6":[58,0,55,59],
+"struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d":[58,0,55,42],
+"struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f":[58,0,55,25],
+"struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3":[58,0,55,47],
+"struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972":[58,0,55,63],
+"struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193":[58,0,55,93],
+"struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876":[58,0,55,0],
+"struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c":[58,0,55,67],
+"struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d":[58,0,55,62],
+"struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de":[58,0,55,66],
+"struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e":[58,0,55,85],
+"struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980":[58,0,55,97],
+"struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab":[58,0,55,53],
+"struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32":[58,0,55,73],
+"struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826":[58,0,55,7],
+"struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94":[58,0,55,13],
+"struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571":[58,0,55,69],
+"struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903":[58,0,55,21],
+"struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c":[58,0,55,26],
+"struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40":[58,0,55,71],
+"struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0":[58,0,55,72],
+"struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c":[58,0,55,41],
+"struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b":[58,0,55,91],
+"struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714":[58,0,55,3],
+"struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb":[58,0,55,58],
+"struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c":[58,0,55,30],
+"struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531":[58,0,55,68],
+"struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061":[58,0,55,61],
+"struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877":[58,0,55,36],
+"struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811":[58,0,55,37],
+"struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97":[58,0,55,6],
+"struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3":[58,0,55,48],
+"struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa":[58,0,55,89],
+"struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2":[58,0,55,60],
+"struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb":[58,0,55,44],
+"struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2":[58,0,55,55],
+"struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35":[58,0,55,40],
+"struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59":[58,0,55,54],
+"struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0":[58,0,55,16],
+"struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3":[58,0,55,92],
+"struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7":[58,0,55,75],
+"struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2":[58,0,55,1],
+"struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3":[58,0,55,43],
+"struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6":[58,0,55,29],
+"struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5":[58,0,55,18],
+"struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412":[58,0,55,56],
+"struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc":[58,0,55,34],
+"struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123":[58,0,55,77],
+"struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b":[58,0,55,70],
+"struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46":[58,0,55,98],
+"struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a":[58,0,55,32],
+"struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb":[58,0,55,82],
+"struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912":[58,0,55,28],
+"struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca":[58,0,55,52],
+"struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008":[58,0,55,64],
+"struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87":[58,0,55,23],
+"struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d":[58,0,55,90],
+"struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a":[58,0,55,38],
+"struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9":[58,0,55,12],
+"struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4":[58,0,55,35],
+"struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c":[58,0,55,49],
+"struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189":[58,0,55,76],
+"struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8":[58,0,55,17],
+"struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1":[58,0,55,4],
+"struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27":[58,0,55,78],
+"struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74":[58,0,55,11],
+"struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c":[58,0,55,57],
+"struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327":[58,0,55,19],
+"struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb":[58,0,55,79],
+"struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172":[58,0,55,95],
+"struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f":[58,0,55,46],
+"struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0":[58,0,55,15],
+"struct___remmina_pref_dialog_priv.html":[58,0,56],
+"struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05":[58,0,56,0],
+"struct___remmina_pref_plugin.html":[58,0,57],
+"struct___remmina_pref_plugin.html#a31f24f29db7e806ccf65f19fb88133b0":[58,0,57,0],
+"struct___remmina_pref_plugin.html#a377073db6f59790bfc3f69c62d4715e4":[58,0,57,2],
+"struct___remmina_pref_plugin.html#a4a036be229f8b3797c3e0ad4913c7cdf":[58,0,57,1],
+"struct___remmina_pref_plugin.html#a5dcdfe2a1aa15b61834d0146a3367c3d":[58,0,57,6],
+"struct___remmina_pref_plugin.html#a9ea805605a462db2ce7912ef05a4fd9d":[58,0,57,4],
+"struct___remmina_pref_plugin.html#aab77d73c001e013228ed77b1418a210b":[58,0,57,3],
+"struct___remmina_pref_plugin.html#ade323f1200f3aae6e5b580c764467522":[58,0,57,5],
+"struct___remmina_protocol_feature.html":[58,0,58],
+"struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7":[58,0,58,4],
+"struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9":[58,0,58,7],
+"struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20":[58,0,58,0],
+"struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b":[58,0,58,2],
+"struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c":[58,0,58,6],
+"struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952":[58,0,58,1],
+"struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d":[58,0,58,3],
+"struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190":[58,0,58,5],
+"struct___remmina_protocol_plugin.html":[58,0,59],
+"struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2":[58,0,59,10],
+"struct___remmina_protocol_plugin.html#a3f3cd7ad27c78a1670de3f42414861ff":[58,0,59,19],
+"struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1":[58,0,59,2],
+"struct___remmina_protocol_plugin.html#a61bee777a81714c80bed22d0cf8e13ae":[58,0,59,5],
+"struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4":[58,0,59,12],
+"struct___remmina_protocol_plugin.html#a8a4c7d195e85a1428abf82e952ff4df3":[58,0,59,9],
+"struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7":[58,0,59,15],
+"struct___remmina_protocol_plugin.html#a9552c70a10eea2b8263dbc7d05e2fb10":[58,0,59,8],
+"struct___remmina_protocol_plugin.html#a9bac82016e8b61d3c63b2e427be3ec70":[58,0,59,4],
+"struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de":[58,0,59,14],
+"struct___remmina_protocol_plugin.html#aa5727804eb3f5cd4a4a40acb98df76bb":[58,0,59,16],
+"struct___remmina_protocol_plugin.html#aae09a7e2c978cc36e85d0f295518978d":[58,0,59,1],
+"struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57":[58,0,59,18],
+"struct___remmina_protocol_plugin.html#ac783acfaf93007d0100bd02f1faff7f0":[58,0,59,17],
+"struct___remmina_protocol_plugin.html#aceb00d9dff794500ccb04a1373eb32db":[58,0,59,0],
+"struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd":[58,0,59,13],
+"struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4":[58,0,59,7],
+"struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2":[58,0,59,3],
+"struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997":[58,0,59,11],
+"struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff":[58,0,59,6],
+"struct___remmina_protocol_setting.html":[58,0,60],
+"struct___remmina_protocol_setting.html#a55a12c6ed9ab21954208e0e83165f770":[58,0,60,4],
+"struct___remmina_protocol_setting.html#a6086b43049072a3a3245c4a45f43dbc5":[58,0,60,7],
+"struct___remmina_protocol_setting.html#a6274d44b592a54162ff583135e55ffc9":[58,0,60,5],
+"struct___remmina_protocol_setting.html#a7a5b063deb126422c461203c074a3dc4":[58,0,60,1],
+"struct___remmina_protocol_setting.html#a94df87db138d4e44e81b3e6c99148ed3":[58,0,60,6],
+"struct___remmina_protocol_setting.html#ab434990a6fe70b7e8a4a8b11129527a6":[58,0,60,0],
+"struct___remmina_protocol_setting.html#ac4cd339607204c5f478727e2a0c04857":[58,0,60,2],
+"struct___remmina_protocol_setting.html#ae1cc5b9d910f68aa5909e3cf483c1d1d":[58,0,60,3],
+"struct___remmina_protocol_setting_opt.html":[58,0,61],
+"struct___remmina_protocol_setting_opt.html#a30495a4edaa2dacfb0dfcb906d68deed":[58,0,61,1],
+"struct___remmina_protocol_setting_opt.html#a3bc14b4167bf3be572d404b941f15a20":[58,0,61,3],
+"struct___remmina_protocol_setting_opt.html#a4633900a166b397de7b8f276ac7e0fea":[58,0,61,2],
+"struct___remmina_protocol_setting_opt.html#a4d4d2d1c3aff12f60831e0b03afcd4dc":[58,0,61,0],
+"struct___remmina_protocol_setting_opt.html#a783e0ee287289146050b45add2f6d867":[58,0,61,4],
+"struct___remmina_protocol_setting_opt.html#a97876b0782030bdcba99839ba5e42f1a":[58,0,61,5],
+"struct___remmina_protocol_widget.html":[58,0,62],
+"struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6":[58,0,62,3],
+"struct___remmina_protocol_widget.html#a95ded9fdbd7d1180d9172c9a1eeb9bfc":[58,0,62,1],
+"struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c":[58,0,62,2],
+"struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67":[58,0,62,0],
+"struct___remmina_protocol_widget_class.html":[58,0,63],
+"struct___remmina_protocol_widget_class.html#a49409472ef2062977ac80f236de454d3":[58,0,63,5],
+"struct___remmina_protocol_widget_class.html#a5cf457e2e48c9c2b831b0c8a4f88c760":[58,0,63,0],
+"struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213":[58,0,63,2],
+"struct___remmina_protocol_widget_class.html#aa6b1be03dfc5554195f6fbc9bb4f50f2":[58,0,63,4],
+"struct___remmina_protocol_widget_class.html#ac646886d6110e3050a48b6a29e183b2c":[58,0,63,3],
+"struct___remmina_protocol_widget_class.html#acbb1fd035466ac82e208e76adfaf9e99":[58,0,63,6],
+"struct___remmina_protocol_widget_class.html#afab4068813bba5630bed6b6000dacb1b":[58,0,63,1],
+"struct___remmina_protocol_widget_priv.html":[58,0,64],
+"struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e":[58,0,64,3],
+"struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec":[58,0,64,21],
+"struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7":[58,0,64,17],
+"struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f":[58,0,64,8],
+"struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0":[58,0,64,18],
+"struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116":[58,0,64,25],
+"struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e":[58,0,64,1],
+"struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05":[58,0,64,4],
+"struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211":[58,0,64,14],
+"struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93":[58,0,64,27],
+"struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b":[58,0,64,0],
+"struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483":[58,0,64,7],
+"struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640":[58,0,64,15],
+"struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d":[58,0,64,11],
+"struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791":[58,0,64,22],
+"struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6":[58,0,64,6],
+"struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca":[58,0,64,19],
+"struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c":[58,0,64,24],
+"struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533":[58,0,64,23],
+"struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10":[58,0,64,20],
+"struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4":[58,0,64,9],
+"struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46":[58,0,64,16],
+"struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326":[58,0,64,13],
+"struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d":[58,0,64,10],
+"struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885":[58,0,64,26],
+"struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0":[58,0,64,5],
+"struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380":[58,0,64,12],
+"struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4":[58,0,64,2],
+"struct___remmina_protocol_widget_signal_data.html":[58,0,65],
+"struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada":[58,0,65,1],
+"struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a":[58,0,65,0],
+"struct___remmina_s_f_t_p.html":[58,0,69],
+"struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e":[58,0,69,1],
+"struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df":[58,0,69,0],
+"struct___remmina_s_f_t_p_client.html":[58,0,70],
+"struct___remmina_s_f_t_p_client.html#a1f66c9db34816532a1c12de30c57f210":[58,0,70,1],
+"struct___remmina_s_f_t_p_client.html#a42cfd0524388c2c05ea4b926dbe966e1":[58,0,70,0],
+"struct___remmina_s_f_t_p_client.html#a6c056e13ab45261dc4f07720910f3270":[58,0,70,3],
+"struct___remmina_s_f_t_p_client.html#a95d95acad60636dd6c45ca93620d1f5b":[58,0,70,4],
+"struct___remmina_s_f_t_p_client.html#ab74654f5e47c939e1098c183a582023c":[58,0,70,2],
+"struct___remmina_s_f_t_p_client.html#ad6c612bb5172905eb63bfd5b672e1875":[58,0,70,5],
+"struct___remmina_s_f_t_p_client_class.html":[58,0,71],
+"struct___remmina_s_f_t_p_client_class.html#ac7786b1cfca2fcc92c85f10e4939f80d":[58,0,71,0],
+"struct___remmina_s_s_h.html":[58,0,72],
+"struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5":[58,0,72,4],
+"struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0":[58,0,72,5],
+"struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed":[58,0,72,11],
+"struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa":[58,0,72,3],
+"struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb":[58,0,72,23],
+"struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed":[58,0,72,7],
+"struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3":[58,0,72,18],
+"struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52":[58,0,72,19],
+"struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9":[58,0,72,20],
+"struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a":[58,0,72,8],
+"struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6":[58,0,72,9],
+"struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f":[58,0,72,22]
};
diff --git a/public/navtreeindex15.js b/public/navtreeindex15.js
index 04f237496..c73eeac5c 100644
--- a/public/navtreeindex15.js
+++ b/public/navtreeindex15.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX15 =
{
-"struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05":[58,0,65,4],
-"struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211":[58,0,65,14],
-"struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93":[58,0,65,27],
-"struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b":[58,0,65,0],
-"struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483":[58,0,65,7],
-"struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640":[58,0,65,15],
-"struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d":[58,0,65,11],
-"struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791":[58,0,65,22],
-"struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6":[58,0,65,6],
-"struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca":[58,0,65,19],
-"struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c":[58,0,65,24],
-"struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533":[58,0,65,23],
-"struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10":[58,0,65,20],
-"struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4":[58,0,65,9],
-"struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46":[58,0,65,16],
-"struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326":[58,0,65,13],
-"struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d":[58,0,65,10],
-"struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885":[58,0,65,26],
-"struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0":[58,0,65,5],
-"struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380":[58,0,65,12],
-"struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4":[58,0,65,2],
-"struct___remmina_protocol_widget_signal_data.html":[58,0,66],
-"struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada":[58,0,66,1],
-"struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a":[58,0,66,0],
-"struct___remmina_s_f_t_p.html":[58,0,70],
-"struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e":[58,0,70,1],
-"struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df":[58,0,70,0],
-"struct___remmina_s_f_t_p_client.html":[58,0,71],
-"struct___remmina_s_f_t_p_client.html#a1f66c9db34816532a1c12de30c57f210":[58,0,71,1],
-"struct___remmina_s_f_t_p_client.html#a42cfd0524388c2c05ea4b926dbe966e1":[58,0,71,0],
-"struct___remmina_s_f_t_p_client.html#a6c056e13ab45261dc4f07720910f3270":[58,0,71,3],
-"struct___remmina_s_f_t_p_client.html#a95d95acad60636dd6c45ca93620d1f5b":[58,0,71,4],
-"struct___remmina_s_f_t_p_client.html#ab74654f5e47c939e1098c183a582023c":[58,0,71,2],
-"struct___remmina_s_f_t_p_client.html#ad6c612bb5172905eb63bfd5b672e1875":[58,0,71,5],
-"struct___remmina_s_f_t_p_client_class.html":[58,0,72],
-"struct___remmina_s_f_t_p_client_class.html#ac7786b1cfca2fcc92c85f10e4939f80d":[58,0,72,0],
-"struct___remmina_s_s_h.html":[58,0,73],
-"struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5":[58,0,73,4],
-"struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0":[58,0,73,5],
-"struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed":[58,0,73,11],
-"struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa":[58,0,73,3],
-"struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb":[58,0,73,23],
-"struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed":[58,0,73,7],
-"struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3":[58,0,73,18],
-"struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52":[58,0,73,19],
-"struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9":[58,0,73,20],
-"struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a":[58,0,73,8],
-"struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6":[58,0,73,9],
-"struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f":[58,0,73,22],
-"struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc":[58,0,73,14],
-"struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529":[58,0,73,12],
-"struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378":[58,0,73,2],
-"struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870":[58,0,73,6],
-"struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03":[58,0,73,0],
-"struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af":[58,0,73,16],
-"struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d":[58,0,73,1],
-"struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6":[58,0,73,10],
-"struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89":[58,0,73,13],
-"struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b":[58,0,73,17],
-"struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602":[58,0,73,21],
-"struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e":[58,0,73,15],
-"struct___remmina_s_s_h_shell.html":[58,0,75],
-"struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7":[58,0,75,3],
-"struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80":[58,0,75,1],
-"struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6":[58,0,75,7],
-"struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2":[58,0,75,0],
-"struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226":[58,0,75,9],
-"struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a":[58,0,75,4],
-"struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f":[58,0,75,5],
-"struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea":[58,0,75,2],
-"struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d":[58,0,75,10],
-"struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098":[58,0,75,8],
-"struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331":[58,0,75,6],
-"struct___remmina_s_s_h_tunnel.html":[58,0,76],
-"struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1":[58,0,76,12],
-"struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047":[58,0,76,1],
-"struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c":[58,0,76,10],
-"struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778":[58,0,76,8],
-"struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1":[58,0,76,20],
-"struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795":[58,0,76,9],
-"struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91":[58,0,76,5],
-"struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da":[58,0,76,7],
-"struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6":[58,0,76,14],
-"struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6":[58,0,76,3],
-"struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b":[58,0,76,0],
-"struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69":[58,0,76,19],
-"struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d":[58,0,76,11],
-"struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb":[58,0,76,2],
-"struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd":[58,0,76,18],
-"struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd":[58,0,76,23],
-"struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660":[58,0,76,6],
-"struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3":[58,0,76,21],
-"struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4":[58,0,76,4],
-"struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513":[58,0,76,15],
-"struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df":[58,0,76,24],
-"struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc":[58,0,76,16],
-"struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23":[58,0,76,22],
-"struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260":[58,0,76,13],
-"struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28":[58,0,76,17],
-"struct___remmina_scrolled_viewport.html":[58,0,67],
-"struct___remmina_scrolled_viewport.html#a43804d9cf3852c56c18298a0ed312ded":[58,0,67,0],
-"struct___remmina_scrolled_viewport.html#aed56f5dfabf67c663eeddbe154734966":[58,0,67,1],
-"struct___remmina_scrolled_viewport_class.html":[58,0,68],
-"struct___remmina_scrolled_viewport_class.html#ac5111bf98051e086d39385fb7e9d314f":[58,0,68,0],
-"struct___remmina_secret_plugin.html":[58,0,69],
-"struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09":[58,0,69,5],
-"struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317":[58,0,69,8],
-"struct___remmina_secret_plugin.html#a175d83898486e37aadd16279f559f659":[58,0,69,1],
-"struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a":[58,0,69,7],
-"struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261":[58,0,69,6],
-"struct___remmina_secret_plugin.html#a34defea2606bbc99a2c334f57e056b06":[58,0,69,3],
-"struct___remmina_secret_plugin.html#a3e49bae6984c9bfd714ea8c664ce33a2":[58,0,69,9],
-"struct___remmina_secret_plugin.html#a6c664274cd540fea91013d298d1ef031":[58,0,69,4],
-"struct___remmina_secret_plugin.html#a81ff30e7efe61fd0057184640baf545e":[58,0,69,2],
-"struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772":[58,0,69,0],
-"struct___remmina_secret_plugin.html#ac6927c92267fdb786b01319aeade0daa":[58,0,69,10],
-"struct___remmina_ssh_search.html":[58,0,74],
-"struct___remmina_ssh_search.html#a15461197d1ae3ebdb827d8b3a95d7662":[58,0,74,14],
-"struct___remmina_ssh_search.html#a1d0ef8ac0f7a8aa86cd345898b079eff":[58,0,74,3],
-"struct___remmina_ssh_search.html#a244e121887afe8fa1624be3ada042a25":[58,0,74,7],
-"struct___remmina_ssh_search.html#a25f8e8061c69d543d5932bbe8e9b311d":[58,0,74,11],
-"struct___remmina_ssh_search.html#a38b67c5450a7b7f154334d66995ed6d0":[58,0,74,12],
-"struct___remmina_ssh_search.html#a3a0be990d7ef8629f8c4caf188b2d723":[58,0,74,15],
-"struct___remmina_ssh_search.html#a73f856810a9ee2d9c58673e83ba9a4eb":[58,0,74,8],
-"struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5":[58,0,74,0],
-"struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02":[58,0,74,9],
-"struct___remmina_ssh_search.html#a94b038162acce3e176a66746041ca298":[58,0,74,2],
-"struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300":[58,0,74,10],
-"struct___remmina_ssh_search.html#ab9a8a6aebee01778f250adf601ed385c":[58,0,74,5],
-"struct___remmina_ssh_search.html#ac8bc2106a642db92386720a9ef08fb25":[58,0,74,1],
-"struct___remmina_ssh_search.html#ad2be1b094ba3d2e65bea1cbd5bc948e0":[58,0,74,4],
-"struct___remmina_ssh_search.html#af30971fb9e025ca075cd2a4a857ad57c":[58,0,74,13],
-"struct___remmina_ssh_search.html#af33585cf803ea86f6e1dccc057e2cce0":[58,0,74,6],
-"struct___remmina_string_list.html":[58,0,77],
-"struct___remmina_string_list.html#a071fad44be3691b3ec231a1d280e50c1":[58,0,77,2],
-"struct___remmina_string_list.html#a15c6a17a5d27cc36a3dd4c40df3311d2":[58,0,77,12],
-"struct___remmina_string_list.html#a182e86dda236f5d780052e4a35da2ac3":[58,0,77,14],
-"struct___remmina_string_list.html#a2da90e0958036c4cfbb52ba05cf69933":[58,0,77,9],
-"struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd":[58,0,77,0],
-"struct___remmina_string_list.html#a3e12b99b6faad1a1f17fab96cf41ae65":[58,0,77,4],
-"struct___remmina_string_list.html#a57ee0849e69606d61879c095b736b256":[58,0,77,5],
-"struct___remmina_string_list.html#a60620e4231fe4c9a75c2468247488be4":[58,0,77,1],
-"struct___remmina_string_list.html#a76962f8e0b4a5dcbaf50790a3338faa3":[58,0,77,11],
-"struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558":[58,0,77,7],
-"struct___remmina_string_list.html#a7fb48d319c2798f16123a8f0585e8bbe":[58,0,77,6],
-"struct___remmina_string_list.html#a96d5b01b1d418b4373c54f02ab4c6c97":[58,0,77,13],
-"struct___remmina_string_list.html#ad84558b018159257efd0969a4cd197c7":[58,0,77,8],
-"struct___remmina_string_list.html#adad14fc7d17767b3b1cdd94eca6b32ab":[58,0,77,10],
-"struct___remmina_string_list.html#af41585699fdfd456f848177457cd3500":[58,0,77,3],
-"struct___remmina_string_list_priv.html":[58,0,78],
-"struct___remmina_string_list_priv.html#a5968b965b712f7e9c4223e3c26f25a24":[58,0,78,2],
-"struct___remmina_string_list_priv.html#a5b7cfdd53c820f7e142631a7867c6bcb":[58,0,78,1],
-"struct___remmina_string_list_priv.html#a88500e692aef96da78bfb0091fc6f4a7":[58,0,78,0],
-"struct___remmina_tool_plugin.html":[58,0,79],
-"struct___remmina_tool_plugin.html#a02b12a1cbcb64caa5532196ddf5214e9":[58,0,79,0],
-"struct___remmina_tool_plugin.html#a9c2d66a167a088f071e545c1d656139e":[58,0,79,1],
-"struct___remmina_tool_plugin.html#a9f57732269208cb7e6198c5f60f1da8b":[58,0,79,5],
-"struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74":[58,0,79,2],
-"struct___remmina_tool_plugin.html#adcdd7f3020665461c0a95a47ac6675af":[58,0,79,3],
-"struct___remmina_tool_plugin.html#ae812659a7e2bd72a7875a05193b88176":[58,0,79,4],
-"struct___remmina_tp_channel_handler.html":[58,0,80],
-"struct___remmina_tp_channel_handler.html#a2d9a415970ebf79ee85c0851042d2363":[58,0,80,9],
-"struct___remmina_tp_channel_handler.html#a33e90ca614722a63d731a76793a23334":[58,0,80,1],
-"struct___remmina_tp_channel_handler.html#a36d9b29f36b9ea3fcc35ff2dfd8c0068":[58,0,80,8],
-"struct___remmina_tp_channel_handler.html#a3eb504e13624f27e97b61042554d2ece":[58,0,80,3],
-"struct___remmina_tp_channel_handler.html#a4f0768975a5f826a22e8e57c2dd76981":[58,0,80,6],
-"struct___remmina_tp_channel_handler.html#a6799c3ddb6d8b4c3edeed94dfccc6213":[58,0,80,7],
-"struct___remmina_tp_channel_handler.html#a70118dbcd13ffba2652135859fd10769":[58,0,80,4],
-"struct___remmina_tp_channel_handler.html#ab6a0de9ed37b1554d96649c84c605107":[58,0,80,11],
-"struct___remmina_tp_channel_handler.html#abe562deaa8bf08eff69e2de915b32659":[58,0,80,13],
-"struct___remmina_tp_channel_handler.html#ac0fc6e931ac466c6a14f1974bf353632":[58,0,80,5],
-"struct___remmina_tp_channel_handler.html#ac1d28bb82475f3e05a0cf6e3f50769ed":[58,0,80,10],
-"struct___remmina_tp_channel_handler.html#ad42b671632d6950a4da68fb84005efe3":[58,0,80,2],
-"struct___remmina_tp_channel_handler.html#af1b190ba94678441ad2d7bbed484f545":[58,0,80,12],
-"struct___remmina_tp_channel_handler.html#af66988bddfcdc27db187ac48ddd8cac8":[58,0,80,0],
-"struct___remmina_tp_handler.html":[58,0,81],
-"struct___remmina_tp_handler.html#a63cf94617150370ee1ffd62595372510":[58,0,81,0],
-"struct___remmina_tp_handler_class.html":[58,0,82],
-"struct___remmina_tp_handler_class.html#a1c0861d534041d9bcf39c0621839482f":[58,0,82,0],
-"struct___remmina_unlock_dialog.html":[58,0,83],
-"struct___remmina_unlock_dialog.html#a0a4303634a8342c96dd71e8d7d3e9e7d":[58,0,83,1],
-"struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235":[58,0,83,5],
-"struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e":[58,0,83,3],
-"struct___remmina_unlock_dialog.html#a3ffac9bfa0017cd0e142adbba489274b":[58,0,83,6],
-"struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b":[58,0,83,0],
-"struct___remmina_unlock_dialog.html#ae104a7396def58ceb51949e73a9b5109":[58,0,83,4],
-"struct___remmina_unlock_dialog.html#af4d3370e923f377e8e0af96deabc5a44":[58,0,83,2],
-"struct___x2_go_custom_user_data.html":[58,0,84],
-"struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64":[58,0,84,1],
-"struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83":[58,0,84,0],
-"struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5":[58,0,84,2],
-"struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24":[58,0,84,4],
-"struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b":[58,0,84,3],
-"struct_mp_run_info.html":[58,0,89],
-"struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5":[58,0,89,2],
-"struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91":[58,0,89,0],
-"struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904":[58,0,89,3],
-"struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079":[58,0,89,1],
-"struct_p_con___spinner.html":[58,0,91],
-"struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046":[58,0,91,3],
-"struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646":[58,0,91,1],
-"struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e":[58,0,91,0],
-"struct_p_con___spinner.html#ae7f4061ced82dace307fb70c08348281":[58,0,91,2],
-"struct_profiles_data.html":[58,0,92],
-"struct_profiles_data.html#a010a740c75d19daf63572f87565ae956":[58,0,92,4],
-"struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4":[58,0,92,2],
-"struct_profiles_data.html#a16267e0d71d796422278afdeba50c13b":[58,0,92,0],
-"struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a":[58,0,92,5],
-"struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef":[58,0,92,3],
-"struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680":[58,0,92,1],
-"struct_py_g_boxed.html":[58,0,93],
-"struct_py_g_boxed.html#a2cf407ea1a1c5375075bc5c41302f7a2":[58,0,93,2],
-"struct_py_g_boxed.html#a4bd93b702c369951058787ee1f1f8921":[58,0,93,1],
-"struct_py_g_boxed.html#a77d67756985e5c2f822ffa3a99500d0d":[58,0,93,0],
-"struct_py_g_object.html":[58,0,95],
-"struct_py_g_object.html#a013ee637dc7a928cf945fa7487b5d3fb":[58,0,95,5],
-"struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c":[58,0,95,1],
-"struct_py_g_object.html#aabb9242316dfa36acdb1457ea13c9357":[58,0,95,3],
-"struct_py_g_object.html#aad56a8eb4154c462a397abbdfd9e4080":[58,0,95,2],
-"struct_py_g_object.html#accc0cb758cadae8f695544165ea51bfc":[58,0,95,6],
-"struct_py_g_object.html#ad51b8278b3ddd6ed392cc388cb95ed3d":[58,0,95,0],
-"struct_py_g_object.html#afd29192dcce1224d623b0706d612cf29":[58,0,95,4],
-"struct_py_g_param_spec.html":[58,0,96],
-"struct_py_g_param_spec.html#a6482ee09e7fae687af1da8def8d803c1":[58,0,96,0],
-"struct_py_g_pointer.html":[58,0,97],
-"struct_py_g_pointer.html#a247024c11b1f37f8e39c912f5667b363":[58,0,97,0],
-"struct_py_g_pointer.html#aa7372c41b1e65d1c8f46bcddf727c1b4":[58,0,97,1],
-"struct_py_generic.html":[58,0,94],
-"struct_py_generic.html#a0282ae57a7189fd68fad0d960b60cb7f":[58,0,94,2],
-"struct_py_generic.html#a1c5857c0a7ee53cbcdcd009b4d9900e7":[58,0,94,1],
-"struct_py_generic.html#ac8b2725e7a4bfe10f6a181b81c8738e4":[58,0,94,0],
-"struct_py_plugin.html":[58,0,98],
-"struct_py_plugin.html#a00183896cad1d1b31b3c5cb724db001f":[58,0,98,6],
-"struct_py_plugin.html#a0ad50bbd41dc27f511d6734b256a37ac":[58,0,98,5],
-"struct_py_plugin.html#a1550876f14c98c48981015b8399a095b":[58,0,98,0],
-"struct_py_plugin.html#a1c03e220a1192e29221b3a8e11ff91f4":[58,0,98,3],
-"struct_py_plugin.html#a3b78180c53db5f3547a8c276a815375a":[58,0,98,4],
-"struct_py_plugin.html#a50c373b557faddaf959746d7086cbd4f":[58,0,98,1],
-"struct_py_plugin.html#a680f794a3909843ccb6d2e7ceeef8558":[58,0,98,2],
-"struct_py_plugin.html#aeba82110f6ea8b55fcbebe80f5134c82":[58,0,98,8],
-"struct_py_plugin.html#afb78d1611099092a7412a2d1818cca40":[58,0,98,7],
-"struct_py_remmina_file.html":[58,0,99],
-"struct_py_remmina_file.html#a9efc86a5ef166f575180d2873023b480":[58,0,99,0],
-"struct_py_remmina_plugin_screenshot_data.html":[58,0,100],
-"struct_py_remmina_plugin_screenshot_data.html#a132778befe6b5251fccff28f12479b41":[58,0,100,3],
-"struct_py_remmina_plugin_screenshot_data.html#a6e0de9833ceda28199a84c4c10437e46":[58,0,100,4],
-"struct_py_remmina_plugin_screenshot_data.html#a74e84cd06fe5493d2e309fa422e0349e":[58,0,100,2],
-"struct_py_remmina_plugin_screenshot_data.html#a79271016958eb788bdbd7184b9af0bd7":[58,0,100,0],
-"struct_py_remmina_plugin_screenshot_data.html#aac36eb74554bd33d71ae4b6531ffa720":[58,0,100,1],
-"struct_py_remmina_protocol_feature.html":[58,0,101]
+"struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc":[58,0,72,14],
+"struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529":[58,0,72,12],
+"struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378":[58,0,72,2],
+"struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870":[58,0,72,6],
+"struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03":[58,0,72,0],
+"struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af":[58,0,72,16],
+"struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d":[58,0,72,1],
+"struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6":[58,0,72,10],
+"struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89":[58,0,72,13],
+"struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b":[58,0,72,17],
+"struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602":[58,0,72,21],
+"struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e":[58,0,72,15],
+"struct___remmina_s_s_h_shell.html":[58,0,74],
+"struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7":[58,0,74,3],
+"struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80":[58,0,74,1],
+"struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6":[58,0,74,7],
+"struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2":[58,0,74,0],
+"struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226":[58,0,74,9],
+"struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a":[58,0,74,4],
+"struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f":[58,0,74,5],
+"struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea":[58,0,74,2],
+"struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d":[58,0,74,10],
+"struct___remmina_s_s_h_shell.html#af347a2bbe1bf439695d181387042b098":[58,0,74,8],
+"struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331":[58,0,74,6],
+"struct___remmina_s_s_h_tunnel.html":[58,0,75],
+"struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1":[58,0,75,12],
+"struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047":[58,0,75,1],
+"struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c":[58,0,75,10],
+"struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778":[58,0,75,8],
+"struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1":[58,0,75,20],
+"struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795":[58,0,75,9],
+"struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91":[58,0,75,5],
+"struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da":[58,0,75,7],
+"struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6":[58,0,75,14],
+"struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6":[58,0,75,3],
+"struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b":[58,0,75,0],
+"struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69":[58,0,75,19],
+"struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d":[58,0,75,11],
+"struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb":[58,0,75,2],
+"struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd":[58,0,75,18],
+"struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd":[58,0,75,23],
+"struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660":[58,0,75,6],
+"struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3":[58,0,75,21],
+"struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4":[58,0,75,4],
+"struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513":[58,0,75,15],
+"struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df":[58,0,75,24],
+"struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc":[58,0,75,16],
+"struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23":[58,0,75,22],
+"struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260":[58,0,75,13],
+"struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28":[58,0,75,17],
+"struct___remmina_scrolled_viewport.html":[58,0,66],
+"struct___remmina_scrolled_viewport.html#a43804d9cf3852c56c18298a0ed312ded":[58,0,66,0],
+"struct___remmina_scrolled_viewport.html#aed56f5dfabf67c663eeddbe154734966":[58,0,66,1],
+"struct___remmina_scrolled_viewport_class.html":[58,0,67],
+"struct___remmina_scrolled_viewport_class.html#ac5111bf98051e086d39385fb7e9d314f":[58,0,67,0],
+"struct___remmina_secret_plugin.html":[58,0,68],
+"struct___remmina_secret_plugin.html#a0155c6684591e0dd843c7145792fef09":[58,0,68,5],
+"struct___remmina_secret_plugin.html#a03fab6fcb013fa87be06d551f936c317":[58,0,68,8],
+"struct___remmina_secret_plugin.html#a175d83898486e37aadd16279f559f659":[58,0,68,1],
+"struct___remmina_secret_plugin.html#a197b28d8b71ccb0c91ce8bf27690968a":[58,0,68,7],
+"struct___remmina_secret_plugin.html#a2123e14795b104f5fe8d77a4b7847261":[58,0,68,6],
+"struct___remmina_secret_plugin.html#a34defea2606bbc99a2c334f57e056b06":[58,0,68,3],
+"struct___remmina_secret_plugin.html#a3e49bae6984c9bfd714ea8c664ce33a2":[58,0,68,9],
+"struct___remmina_secret_plugin.html#a6c664274cd540fea91013d298d1ef031":[58,0,68,4],
+"struct___remmina_secret_plugin.html#a81ff30e7efe61fd0057184640baf545e":[58,0,68,2],
+"struct___remmina_secret_plugin.html#abbe56963e94b1a131f3e6d9bcafce772":[58,0,68,0],
+"struct___remmina_secret_plugin.html#ac6927c92267fdb786b01319aeade0daa":[58,0,68,10],
+"struct___remmina_ssh_search.html":[58,0,73],
+"struct___remmina_ssh_search.html#a15461197d1ae3ebdb827d8b3a95d7662":[58,0,73,14],
+"struct___remmina_ssh_search.html#a1d0ef8ac0f7a8aa86cd345898b079eff":[58,0,73,3],
+"struct___remmina_ssh_search.html#a244e121887afe8fa1624be3ada042a25":[58,0,73,7],
+"struct___remmina_ssh_search.html#a25f8e8061c69d543d5932bbe8e9b311d":[58,0,73,11],
+"struct___remmina_ssh_search.html#a38b67c5450a7b7f154334d66995ed6d0":[58,0,73,12],
+"struct___remmina_ssh_search.html#a3a0be990d7ef8629f8c4caf188b2d723":[58,0,73,15],
+"struct___remmina_ssh_search.html#a73f856810a9ee2d9c58673e83ba9a4eb":[58,0,73,8],
+"struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5":[58,0,73,0],
+"struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02":[58,0,73,9],
+"struct___remmina_ssh_search.html#a94b038162acce3e176a66746041ca298":[58,0,73,2],
+"struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300":[58,0,73,10],
+"struct___remmina_ssh_search.html#ab9a8a6aebee01778f250adf601ed385c":[58,0,73,5],
+"struct___remmina_ssh_search.html#ac8bc2106a642db92386720a9ef08fb25":[58,0,73,1],
+"struct___remmina_ssh_search.html#ad2be1b094ba3d2e65bea1cbd5bc948e0":[58,0,73,4],
+"struct___remmina_ssh_search.html#af30971fb9e025ca075cd2a4a857ad57c":[58,0,73,13],
+"struct___remmina_ssh_search.html#af33585cf803ea86f6e1dccc057e2cce0":[58,0,73,6],
+"struct___remmina_string_list.html":[58,0,76],
+"struct___remmina_string_list.html#a071fad44be3691b3ec231a1d280e50c1":[58,0,76,2],
+"struct___remmina_string_list.html#a15c6a17a5d27cc36a3dd4c40df3311d2":[58,0,76,12],
+"struct___remmina_string_list.html#a182e86dda236f5d780052e4a35da2ac3":[58,0,76,14],
+"struct___remmina_string_list.html#a2da90e0958036c4cfbb52ba05cf69933":[58,0,76,9],
+"struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd":[58,0,76,0],
+"struct___remmina_string_list.html#a3e12b99b6faad1a1f17fab96cf41ae65":[58,0,76,4],
+"struct___remmina_string_list.html#a57ee0849e69606d61879c095b736b256":[58,0,76,5],
+"struct___remmina_string_list.html#a60620e4231fe4c9a75c2468247488be4":[58,0,76,1],
+"struct___remmina_string_list.html#a76962f8e0b4a5dcbaf50790a3338faa3":[58,0,76,11],
+"struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558":[58,0,76,7],
+"struct___remmina_string_list.html#a7fb48d319c2798f16123a8f0585e8bbe":[58,0,76,6],
+"struct___remmina_string_list.html#a96d5b01b1d418b4373c54f02ab4c6c97":[58,0,76,13],
+"struct___remmina_string_list.html#ad84558b018159257efd0969a4cd197c7":[58,0,76,8],
+"struct___remmina_string_list.html#adad14fc7d17767b3b1cdd94eca6b32ab":[58,0,76,10],
+"struct___remmina_string_list.html#af41585699fdfd456f848177457cd3500":[58,0,76,3],
+"struct___remmina_string_list_priv.html":[58,0,77],
+"struct___remmina_string_list_priv.html#a5968b965b712f7e9c4223e3c26f25a24":[58,0,77,2],
+"struct___remmina_string_list_priv.html#a5b7cfdd53c820f7e142631a7867c6bcb":[58,0,77,1],
+"struct___remmina_string_list_priv.html#a88500e692aef96da78bfb0091fc6f4a7":[58,0,77,0],
+"struct___remmina_tool_plugin.html":[58,0,78],
+"struct___remmina_tool_plugin.html#a02b12a1cbcb64caa5532196ddf5214e9":[58,0,78,0],
+"struct___remmina_tool_plugin.html#a9c2d66a167a088f071e545c1d656139e":[58,0,78,1],
+"struct___remmina_tool_plugin.html#a9f57732269208cb7e6198c5f60f1da8b":[58,0,78,5],
+"struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74":[58,0,78,2],
+"struct___remmina_tool_plugin.html#adcdd7f3020665461c0a95a47ac6675af":[58,0,78,3],
+"struct___remmina_tool_plugin.html#ae812659a7e2bd72a7875a05193b88176":[58,0,78,4],
+"struct___remmina_tp_channel_handler.html":[58,0,79],
+"struct___remmina_tp_channel_handler.html#a2d9a415970ebf79ee85c0851042d2363":[58,0,79,9],
+"struct___remmina_tp_channel_handler.html#a33e90ca614722a63d731a76793a23334":[58,0,79,1],
+"struct___remmina_tp_channel_handler.html#a36d9b29f36b9ea3fcc35ff2dfd8c0068":[58,0,79,8],
+"struct___remmina_tp_channel_handler.html#a3eb504e13624f27e97b61042554d2ece":[58,0,79,3],
+"struct___remmina_tp_channel_handler.html#a4f0768975a5f826a22e8e57c2dd76981":[58,0,79,6],
+"struct___remmina_tp_channel_handler.html#a6799c3ddb6d8b4c3edeed94dfccc6213":[58,0,79,7],
+"struct___remmina_tp_channel_handler.html#a70118dbcd13ffba2652135859fd10769":[58,0,79,4],
+"struct___remmina_tp_channel_handler.html#ab6a0de9ed37b1554d96649c84c605107":[58,0,79,11],
+"struct___remmina_tp_channel_handler.html#abe562deaa8bf08eff69e2de915b32659":[58,0,79,13],
+"struct___remmina_tp_channel_handler.html#ac0fc6e931ac466c6a14f1974bf353632":[58,0,79,5],
+"struct___remmina_tp_channel_handler.html#ac1d28bb82475f3e05a0cf6e3f50769ed":[58,0,79,10],
+"struct___remmina_tp_channel_handler.html#ad42b671632d6950a4da68fb84005efe3":[58,0,79,2],
+"struct___remmina_tp_channel_handler.html#af1b190ba94678441ad2d7bbed484f545":[58,0,79,12],
+"struct___remmina_tp_channel_handler.html#af66988bddfcdc27db187ac48ddd8cac8":[58,0,79,0],
+"struct___remmina_tp_handler.html":[58,0,80],
+"struct___remmina_tp_handler.html#a63cf94617150370ee1ffd62595372510":[58,0,80,0],
+"struct___remmina_tp_handler_class.html":[58,0,81],
+"struct___remmina_tp_handler_class.html#a1c0861d534041d9bcf39c0621839482f":[58,0,81,0],
+"struct___remmina_unlock_dialog.html":[58,0,82],
+"struct___remmina_unlock_dialog.html#a0a4303634a8342c96dd71e8d7d3e9e7d":[58,0,82,1],
+"struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235":[58,0,82,5],
+"struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e":[58,0,82,3],
+"struct___remmina_unlock_dialog.html#a3ffac9bfa0017cd0e142adbba489274b":[58,0,82,6],
+"struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b":[58,0,82,0],
+"struct___remmina_unlock_dialog.html#ae104a7396def58ceb51949e73a9b5109":[58,0,82,4],
+"struct___remmina_unlock_dialog.html#af4d3370e923f377e8e0af96deabc5a44":[58,0,82,2],
+"struct___x2_go_custom_user_data.html":[58,0,83],
+"struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64":[58,0,83,1],
+"struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83":[58,0,83,0],
+"struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5":[58,0,83,2],
+"struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24":[58,0,83,4],
+"struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b":[58,0,83,3],
+"struct_mp_run_info.html":[58,0,88],
+"struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5":[58,0,88,2],
+"struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91":[58,0,88,0],
+"struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904":[58,0,88,3],
+"struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079":[58,0,88,1],
+"struct_p_con___spinner.html":[58,0,90],
+"struct_p_con___spinner.html#a895fd84ca4c0a4410b90b9690b5af046":[58,0,90,3],
+"struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646":[58,0,90,1],
+"struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e":[58,0,90,0],
+"struct_p_con___spinner.html#ae7f4061ced82dace307fb70c08348281":[58,0,90,2],
+"struct_profiles_data.html":[58,0,91],
+"struct_profiles_data.html#a010a740c75d19daf63572f87565ae956":[58,0,91,4],
+"struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4":[58,0,91,2],
+"struct_profiles_data.html#a16267e0d71d796422278afdeba50c13b":[58,0,91,0],
+"struct_profiles_data.html#a7d3134f43d61603be7b021e62305633a":[58,0,91,5],
+"struct_profiles_data.html#af82cb4649acce0ce21aefca9eb6430ef":[58,0,91,3],
+"struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680":[58,0,91,1],
+"struct_py_g_boxed.html":[58,0,92],
+"struct_py_g_boxed.html#a2cf407ea1a1c5375075bc5c41302f7a2":[58,0,92,2],
+"struct_py_g_boxed.html#a4bd93b702c369951058787ee1f1f8921":[58,0,92,1],
+"struct_py_g_boxed.html#a77d67756985e5c2f822ffa3a99500d0d":[58,0,92,0],
+"struct_py_g_object.html":[58,0,94],
+"struct_py_g_object.html#a013ee637dc7a928cf945fa7487b5d3fb":[58,0,94,5],
+"struct_py_g_object.html#a517264b1e7fdb622956923bd5e59288c":[58,0,94,1],
+"struct_py_g_object.html#aabb9242316dfa36acdb1457ea13c9357":[58,0,94,3],
+"struct_py_g_object.html#aad56a8eb4154c462a397abbdfd9e4080":[58,0,94,2],
+"struct_py_g_object.html#accc0cb758cadae8f695544165ea51bfc":[58,0,94,6],
+"struct_py_g_object.html#ad51b8278b3ddd6ed392cc388cb95ed3d":[58,0,94,0],
+"struct_py_g_object.html#afd29192dcce1224d623b0706d612cf29":[58,0,94,4],
+"struct_py_g_param_spec.html":[58,0,95],
+"struct_py_g_param_spec.html#a6482ee09e7fae687af1da8def8d803c1":[58,0,95,0],
+"struct_py_g_pointer.html":[58,0,96],
+"struct_py_g_pointer.html#a247024c11b1f37f8e39c912f5667b363":[58,0,96,0],
+"struct_py_g_pointer.html#aa7372c41b1e65d1c8f46bcddf727c1b4":[58,0,96,1],
+"struct_py_generic.html":[58,0,93],
+"struct_py_generic.html#a0282ae57a7189fd68fad0d960b60cb7f":[58,0,93,2],
+"struct_py_generic.html#a1c5857c0a7ee53cbcdcd009b4d9900e7":[58,0,93,1],
+"struct_py_generic.html#ac8b2725e7a4bfe10f6a181b81c8738e4":[58,0,93,0],
+"struct_py_plugin.html":[58,0,97],
+"struct_py_plugin.html#a00183896cad1d1b31b3c5cb724db001f":[58,0,97,6],
+"struct_py_plugin.html#a0ad50bbd41dc27f511d6734b256a37ac":[58,0,97,5],
+"struct_py_plugin.html#a1550876f14c98c48981015b8399a095b":[58,0,97,0],
+"struct_py_plugin.html#a1c03e220a1192e29221b3a8e11ff91f4":[58,0,97,3],
+"struct_py_plugin.html#a3b78180c53db5f3547a8c276a815375a":[58,0,97,4],
+"struct_py_plugin.html#a50c373b557faddaf959746d7086cbd4f":[58,0,97,1],
+"struct_py_plugin.html#a680f794a3909843ccb6d2e7ceeef8558":[58,0,97,2],
+"struct_py_plugin.html#aeba82110f6ea8b55fcbebe80f5134c82":[58,0,97,8],
+"struct_py_plugin.html#afb78d1611099092a7412a2d1818cca40":[58,0,97,7],
+"struct_py_remmina_file.html":[58,0,98],
+"struct_py_remmina_file.html#a9efc86a5ef166f575180d2873023b480":[58,0,98,0],
+"struct_py_remmina_plugin_screenshot_data.html":[58,0,99],
+"struct_py_remmina_plugin_screenshot_data.html#a132778befe6b5251fccff28f12479b41":[58,0,99,3],
+"struct_py_remmina_plugin_screenshot_data.html#a6e0de9833ceda28199a84c4c10437e46":[58,0,99,4],
+"struct_py_remmina_plugin_screenshot_data.html#a74e84cd06fe5493d2e309fa422e0349e":[58,0,99,2],
+"struct_py_remmina_plugin_screenshot_data.html#a79271016958eb788bdbd7184b9af0bd7":[58,0,99,0],
+"struct_py_remmina_plugin_screenshot_data.html#aac36eb74554bd33d71ae4b6531ffa720":[58,0,99,1],
+"struct_py_remmina_protocol_feature.html":[58,0,100],
+"struct_py_remmina_protocol_feature.html#a9f3cc7cfae91a2651c3d78bbc3feb53d":[58,0,100,0],
+"struct_py_remmina_protocol_feature.html#ae952bdad284cbef56bcc598c9e2743b4":[58,0,100,1],
+"struct_py_remmina_protocol_feature.html#aecce603234baf1434f3f6aca64616cbc":[58,0,100,4],
+"struct_py_remmina_protocol_feature.html#af47063cd1082038eeae47af016b1c0d2":[58,0,100,3],
+"struct_py_remmina_protocol_feature.html#af4cd1fe41db52b31d6715c6535d600c0":[58,0,100,2],
+"struct_py_remmina_protocol_setting.html":[58,0,101],
+"struct_py_remmina_protocol_setting.html#a640447ed12db0bee967d350562eea55e":[58,0,101,1],
+"struct_py_remmina_protocol_setting.html#a79347dc9c1e71a2594b4df5e3576ad3a":[58,0,101,3],
+"struct_py_remmina_protocol_setting.html#a83f20deb4731925e29fff2a8a16535d6":[58,0,101,0],
+"struct_py_remmina_protocol_setting.html#a9816a20dd4999bfd2f3be57cae6c1888":[58,0,101,4],
+"struct_py_remmina_protocol_setting.html#aab4ec78686dfde9ba9a234e218debe16":[58,0,101,5],
+"struct_py_remmina_protocol_setting.html#ad65959226c313319c2e3bdfcee472b2b":[58,0,101,2],
+"struct_py_remmina_protocol_widget.html":[58,0,102],
+"struct_py_remmina_protocol_widget.html#aa32e589462d1defa097cbccc0a74f3af":[58,0,102,0],
+"struct_remmina_message_panel_private.html":[58,0,109],
+"struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4":[58,0,109,1],
+"struct_remmina_message_panel_private.html#a7cbab11c19f590bf2ec253eb694b93f8":[58,0,109,2],
+"struct_remmina_message_panel_private.html#a9766a5c72bd815501e2ba0a5ac8cd283":[58,0,109,0],
+"struct_remmina_plugin_loader.html":[58,0,110],
+"struct_remmina_plugin_loader.html#a56f300db088d387cc4de9dbcd4b8e96f":[58,0,110,0],
+"struct_remmina_plugin_loader.html#a89a0df31eaca09c7f3009d1100f3b078":[58,0,110,1],
+"structdistro__info.html":[58,0,84],
+"structdistro__info.html#a1999084b11586bdb56bc2453fce7f633":[58,0,84,0],
+"structdistro__info.html#a27013edbc763fecb35337ca0affacfc2":[58,0,84,1],
+"structitem.html":[58,0,85],
+"structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb":[58,0,85,5],
+"structitem.html#a38ed39bc82590b07b2746c48a2eef262":[58,0,85,4],
+"structitem.html#a456c6639914adbd3be8b4da351775d04":[58,0,85,0],
+"structitem.html#a86aaa250b539e47685bae65032af9ce7":[58,0,85,2],
+"structitem.html#a975a1b37d9e003e1abb2a505474894b5":[58,0,85,3],
+"structitem.html#adb779965c903bb950d429e90ebce3162":[58,0,85,1],
+"structlsb__distro__info.html":[58,0,86],
+"structlsb__distro__info.html#a251763a49054183774e2082595537e47":[58,0,86,0],
+"structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7":[58,0,86,1],
+"structmpchanger__params.html":[58,0,87],
+"structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4":[58,0,87,13],
+"structmpchanger__params.html#a098952d194a183d4a505aa065797864b":[58,0,87,16],
+"structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87":[58,0,87,20],
+"structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46":[58,0,87,17],
+"structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73":[58,0,87,22],
+"structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e":[58,0,87,18],
+"structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719":[58,0,87,1],
+"structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6":[58,0,87,14],
+"structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be":[58,0,87,11],
+"structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742":[58,0,87,24],
+"structmpchanger__params.html#a69c2b22c53164a73241573474071df6e":[58,0,87,6],
+"structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc":[58,0,87,7],
+"structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2":[58,0,87,23],
+"structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659":[58,0,87,15]
};
diff --git a/public/navtreeindex16.js b/public/navtreeindex16.js
index 085282bd3..c8901cccb 100644
--- a/public/navtreeindex16.js
+++ b/public/navtreeindex16.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX16 =
{
-"struct_py_remmina_protocol_feature.html#a9f3cc7cfae91a2651c3d78bbc3feb53d":[58,0,101,0],
-"struct_py_remmina_protocol_feature.html#ae952bdad284cbef56bcc598c9e2743b4":[58,0,101,1],
-"struct_py_remmina_protocol_feature.html#aecce603234baf1434f3f6aca64616cbc":[58,0,101,4],
-"struct_py_remmina_protocol_feature.html#af47063cd1082038eeae47af016b1c0d2":[58,0,101,3],
-"struct_py_remmina_protocol_feature.html#af4cd1fe41db52b31d6715c6535d600c0":[58,0,101,2],
-"struct_py_remmina_protocol_setting.html":[58,0,102],
-"struct_py_remmina_protocol_setting.html#a640447ed12db0bee967d350562eea55e":[58,0,102,1],
-"struct_py_remmina_protocol_setting.html#a79347dc9c1e71a2594b4df5e3576ad3a":[58,0,102,3],
-"struct_py_remmina_protocol_setting.html#a83f20deb4731925e29fff2a8a16535d6":[58,0,102,0],
-"struct_py_remmina_protocol_setting.html#a9816a20dd4999bfd2f3be57cae6c1888":[58,0,102,4],
-"struct_py_remmina_protocol_setting.html#aab4ec78686dfde9ba9a234e218debe16":[58,0,102,5],
-"struct_py_remmina_protocol_setting.html#ad65959226c313319c2e3bdfcee472b2b":[58,0,102,2],
-"struct_py_remmina_protocol_widget.html":[58,0,103],
-"struct_py_remmina_protocol_widget.html#aa32e589462d1defa097cbccc0a74f3af":[58,0,103,0],
-"struct_remmina_message_panel_private.html":[58,0,110],
-"struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4":[58,0,110,1],
-"struct_remmina_message_panel_private.html#a7cbab11c19f590bf2ec253eb694b93f8":[58,0,110,2],
-"struct_remmina_message_panel_private.html#a9766a5c72bd815501e2ba0a5ac8cd283":[58,0,110,0],
-"struct_remmina_plugin_loader.html":[58,0,111],
-"struct_remmina_plugin_loader.html#a56f300db088d387cc4de9dbcd4b8e96f":[58,0,111,0],
-"struct_remmina_plugin_loader.html#a89a0df31eaca09c7f3009d1100f3b078":[58,0,111,1],
-"structdistro__info.html":[58,0,85],
-"structdistro__info.html#a1999084b11586bdb56bc2453fce7f633":[58,0,85,0],
-"structdistro__info.html#a27013edbc763fecb35337ca0affacfc2":[58,0,85,1],
-"structitem.html":[58,0,86],
-"structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb":[58,0,86,5],
-"structitem.html#a38ed39bc82590b07b2746c48a2eef262":[58,0,86,4],
-"structitem.html#a456c6639914adbd3be8b4da351775d04":[58,0,86,0],
-"structitem.html#a86aaa250b539e47685bae65032af9ce7":[58,0,86,2],
-"structitem.html#a975a1b37d9e003e1abb2a505474894b5":[58,0,86,3],
-"structitem.html#adb779965c903bb950d429e90ebce3162":[58,0,86,1],
-"structlsb__distro__info.html":[58,0,87],
-"structlsb__distro__info.html#a251763a49054183774e2082595537e47":[58,0,87,0],
-"structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7":[58,0,87,1],
-"structmpchanger__params.html":[58,0,88],
-"structmpchanger__params.html#a00a888f26c1609e064367bb5095c71f4":[58,0,88,13],
-"structmpchanger__params.html#a098952d194a183d4a505aa065797864b":[58,0,88,16],
-"structmpchanger__params.html#a170ffe7965540ab152a4a95945482c87":[58,0,88,20],
-"structmpchanger__params.html#a3cb4141ca61b0b9a5584239386dbbe46":[58,0,88,17],
-"structmpchanger__params.html#a3f0a338901d8e6195eb872b0f2098e73":[58,0,88,22],
-"structmpchanger__params.html#a41f51745fc0e63d75d15fc80aaa4a29e":[58,0,88,18],
-"structmpchanger__params.html#a44429b8b620590ed1e1e015af6191719":[58,0,88,1],
-"structmpchanger__params.html#a59187ffb045f62b334ff972331f960b6":[58,0,88,14],
-"structmpchanger__params.html#a5c5b14d537a1b0685027d50d2a4cf9be":[58,0,88,11],
-"structmpchanger__params.html#a634dd9d08486b2a435fba15119db6742":[58,0,88,24],
-"structmpchanger__params.html#a69c2b22c53164a73241573474071df6e":[58,0,88,6],
-"structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc":[58,0,88,7],
-"structmpchanger__params.html#a87576a4dfe04c11686cf574669331bb2":[58,0,88,23],
-"structmpchanger__params.html#a8e6ebba297a1eaf81a21e0b6d0483659":[58,0,88,15],
-"structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c":[58,0,88,3],
-"structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2":[58,0,88,0],
-"structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348":[58,0,88,9],
-"structmpchanger__params.html#ab46251204997d3d363681557f99e66ce":[58,0,88,8],
-"structmpchanger__params.html#ac8fdacd94418731904020ff679475918":[58,0,88,19],
-"structmpchanger__params.html#ac9c16b65f1d27a62e2622b79f1aaf7bd":[58,0,88,21],
-"structmpchanger__params.html#acd1ad765997b06feec54fa746d5b4d2b":[58,0,88,5],
-"structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809":[58,0,88,12],
-"structmpchanger__params.html#adc26bfabbc7c02beb1df988801c7972d":[58,0,88,10],
-"structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568":[58,0,88,2],
-"structmpchanger__params.html#ae582e14f2f790ea6bfdf81d5920e51ed":[58,0,88,4],
-"structon_main_thread__cb__data.html":[58,0,90],
-"structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8":[58,0,90,10],
-"structon_main_thread__cb__data.html#a2990bfbbb713d7d300b121327dc179bdaf505d0b00d46515c4ab37b643567af41":[58,0,90,0],
-"structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4":[58,0,90,9],
-"structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75":[58,0,90,2],
-"structon_main_thread__cb__data.html#a8bf0f89b3c961ac28ccae9a9e1060db4":[58,0,90,12],
-"structon_main_thread__cb__data.html#a92fd0bfc7715dcb8237a002850701222":[58,0,90,13],
-"structon_main_thread__cb__data.html#aa01cccfd573952ec0cd5df823e2d8f74":[58,0,90,6],
-"structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38":[58,0,90,3],
-"structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc":[58,0,90,1],
-"structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc":[58,0,90,7],
-"structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb":[58,0,90,5],
-"structon_main_thread__cb__data.html#aeb3812987b358af65f087a5c063814f6":[58,0,90,4],
-"structon_main_thread__cb__data.html#aec2ab8de1fa3f948ada7bd70ce2b353f":[58,0,90,14],
-"structon_main_thread__cb__data.html#af0d50114cec8cfdd7692a39c1fdba783":[58,0,90,11],
-"structon_main_thread__cb__data.html#af55aa025154991f8c762e93074eec242":[58,0,90,8],
-"structregion.html":[58,0,104],
-"structregion.html#a3b8e9f37558f5a790945b9dc1cbcadb6":[58,0,104,1],
-"structregion.html#a585e1a437e6e8f8a80785aec2f2762c8":[58,0,104,0],
-"structregion.html#a97015e361d0cbedf7dcab10fbea95b10":[58,0,104,3],
-"structregion.html#ad258e7b02e819b46656294de5e4bd8ad":[58,0,104,2],
-"structremmina__masterthread__exec__data.html":[58,0,105],
-"structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f":[58,0,105,28],
-"structremmina__masterthread__exec__data.html#a02bfd27b9d74423a89c656e4ebbfa77d":[58,0,105,17],
-"structremmina__masterthread__exec__data.html#a02cdefa13335a3bf35a16791b2af0910":[58,0,105,52],
-"structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd":[58,0,105,51],
-"structremmina__masterthread__exec__data.html#a0725f553412b93c289f10bd2a49a112b":[58,0,105,16],
-"structremmina__masterthread__exec__data.html#a0bf7d0588171676f9801e40ccea9e2f1":[58,0,105,55],
-"structremmina__masterthread__exec__data.html#a24956c80352de0631eed5e61138c55d1":[58,0,105,56],
-"structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9":[58,0,105,20],
-"structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece":[58,0,105,40],
-"structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6":[58,0,105,38],
-"structremmina__masterthread__exec__data.html#a41d44d1cc03512701f61bb88a983e94b":[58,0,105,41],
-"structremmina__masterthread__exec__data.html#a41fe769268faa363a261ac4ce02ac35e":[58,0,105,53],
-"structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97":[58,0,105,36],
-"structremmina__masterthread__exec__data.html#a670e48a166439326cb75d31499b19ec1":[58,0,105,31],
-"structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace":[58,0,105,15],
-"structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a":[58,0,105,37],
-"structremmina__masterthread__exec__data.html#a7e5f81e4664c33357afb259919a1dad0":[58,0,105,58],
-"structremmina__masterthread__exec__data.html#a8037aefe9dcee17afe1b14166800a668":[58,0,105,19],
-"structremmina__masterthread__exec__data.html#a83087d1f4af27c63ec04ee91cb85d050":[58,0,105,32],
-"structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1":[58,0,105,27],
-"structremmina__masterthread__exec__data.html#a967491ec9115ba8e0d4603017fc439a6":[58,0,105,29],
-"structremmina__masterthread__exec__data.html#a9a7d8ee3e4b091baee9167892b18e0de":[58,0,105,57],
-"structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15":[58,0,105,47],
-"structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40":[58,0,105,24],
-"structremmina__masterthread__exec__data.html#ab2d4a59a7498371e4a12516a4d4349c9":[58,0,105,34],
-"structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1":[58,0,105,25],
-"structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1":[58,0,105,46],
-"structremmina__masterthread__exec__data.html#abbe5b4e21ccb693a6505c958e150984b":[58,0,105,50],
-"structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688":[58,0,105,33],
-"structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63":[58,0,105,14],
-"structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6":[58,0,105,23],
-"structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886":[58,0,105,21],
-"structremmina__masterthread__exec__data.html#aca5558e097d2874a89f561a14bdd407c":[58,0,105,26],
-"structremmina__masterthread__exec__data.html#ad02dd3e2c0839ed5dda61b49a4377eb9":[58,0,105,43],
-"structremmina__masterthread__exec__data.html#ad52781108d6219754fdff16e0e1764ea":[58,0,105,54],
-"structremmina__masterthread__exec__data.html#ad5d676070c4a9c71302eb6052b20b6d9":[58,0,105,35],
-"structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319":[58,0,105,42],
-"structremmina__masterthread__exec__data.html#ad918fe1f14834f71a7a55bdee0c9a543":[58,0,105,44],
-"structremmina__masterthread__exec__data.html#ad967414b3a4f021b073529a6e9c48d61":[58,0,105,30],
-"structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb":[58,0,105,59],
-"structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c":[58,0,105,48],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa03356bb429da6e0c543c2adfb847ee09":[58,0,105,7],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa1331403ed8055144287216d142f28b8d":[58,0,105,1],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa193782f6e0bc603b42a48f7d69695605":[58,0,105,13],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa1b51f5190ad4e06f321f04a2db473567":[58,0,105,8],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa205a5666cfb0bc3b52f5a3381438fc10":[58,0,105,3],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa4fe813264ce7f8e0058367fb2aa6f537":[58,0,105,2],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa5b6ab364fe22ab02ca15a3bcb623e51d":[58,0,105,4],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa5e804a7591adc595d0c2a7b71e5ae809":[58,0,105,10],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa71a775d97b8e9f6d65a55a39d44f8cf9":[58,0,105,6],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366faa9f7b90d8342bbf70596ff681807b06a":[58,0,105,0],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366faab4371b747f964dc6c16b0d1fffd2d82":[58,0,105,5],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fab4dd05cf9f03d3aa0828011c3340a197":[58,0,105,9],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fab780338a09c368a8096c0718cdcdcc60":[58,0,105,12],
-"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fae671acc3a3fc86225289bc2614f52a8b":[58,0,105,11],
-"structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07":[58,0,105,49],
-"structremmina__masterthread__exec__data.html#aebeb1a8332f2e1ce5264bf73348bdffd":[58,0,105,18],
-"structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658":[58,0,105,45],
-"structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af":[58,0,105,39],
-"structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87":[58,0,105,22],
-"structremmina__plugin__rdp__event.html":[58,0,106],
-"structremmina__plugin__rdp__event.html#a008a5e7caebab7b0a5d4f6a48b4c63f6":[58,0,106,0],
-"structremmina__plugin__rdp__event.html#a02c2d40efeac883dcc6294be9782e082":[58,0,106,17],
-"structremmina__plugin__rdp__event.html#a0ff77bb8ed355ac55a7dc4ab28a02649":[58,0,106,10],
-"structremmina__plugin__rdp__event.html#a18cb50afaa8b9df1759f87899892fdb6":[58,0,106,12],
-"structremmina__plugin__rdp__event.html#a2822d7acc35ca8ecc5afb4c44b1ac117":[58,0,106,13],
-"structremmina__plugin__rdp__event.html#a2f6b6cb00f2511b7849654b026cfd105":[58,0,106,26],
-"structremmina__plugin__rdp__event.html#a30115ccc01062368d9b1189a0f378f57":[58,0,106,6],
-"structremmina__plugin__rdp__event.html#a699aeed24ff4a648e00aced7a1e3adf6":[58,0,106,14],
-"structremmina__plugin__rdp__event.html#a6c91276b122d70b8e723e046f6dbd151":[58,0,106,11],
-"structremmina__plugin__rdp__event.html#a72cd3fa2cc46eb03de7f68d63b2646b2":[58,0,106,2],
-"structremmina__plugin__rdp__event.html#a7a1c9ce96d50f8902f7504bbfd0a057b":[58,0,106,23],
-"structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c":[58,0,106,8],
-"structremmina__plugin__rdp__event.html#a81b19d4696e8a38139182113d5d741ba":[58,0,106,20],
-"structremmina__plugin__rdp__event.html#a84797e0cdf4484432740a8946325f126":[58,0,106,22],
-"structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764":[58,0,106,21],
-"structremmina__plugin__rdp__event.html#aab8e2356f6619d11ecc80b8b767ca815":[58,0,106,18],
-"structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114":[58,0,106,9],
-"structremmina__plugin__rdp__event.html#ab834752f9089cbc4a8841fdc037aa094":[58,0,106,24],
-"structremmina__plugin__rdp__event.html#ac8972b1def0a956b7c36534da0e56b3b":[58,0,106,25],
-"structremmina__plugin__rdp__event.html#acc5ea94958152ae483d269a28f34b0b0":[58,0,106,4],
-"structremmina__plugin__rdp__event.html#ad3b01f14f235b582b54aa9a0057d5c1c":[58,0,106,16],
-"structremmina__plugin__rdp__event.html#ad8c508c65e9f84c92f2f817eb7be2985":[58,0,106,5],
-"structremmina__plugin__rdp__event.html#ada88729499d8df4337a81d1cd5bcd7bf":[58,0,106,15],
-"structremmina__plugin__rdp__event.html#ae1093ce4f4e4e4b632ca4704ecfa698e":[58,0,106,7],
-"structremmina__plugin__rdp__event.html#af02b51a258600a3c4f6d57e868dc39cf":[58,0,106,27],
-"structremmina__plugin__rdp__event.html#af62c17a8001e045d3f9e781a0a5089ef":[58,0,106,19],
-"structremmina__plugin__rdp__event.html#af6744820a897cbe91a79cf3e78b3e494":[58,0,106,1],
-"structremmina__plugin__rdp__event.html#af9cd4e060d42600c8a9089b04612a624":[58,0,106,3],
-"structremmina__plugin__rdp__keymap__entry.html":[58,0,107],
-"structremmina__plugin__rdp__keymap__entry.html#a20d8c7c462c3cb173e3baedbc19a8a88":[58,0,107,0],
-"structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1":[58,0,107,1],
-"structremmina__plugin__rdp__ui__object.html":[58,0,108],
-"structremmina__plugin__rdp__ui__object.html#a01791c6ee1e4e9c8298404fdd5a397c7":[58,0,108,19],
-"structremmina__plugin__rdp__ui__object.html#a2f43ecee45e4cd2313353fd596a7b589":[58,0,108,26],
-"structremmina__plugin__rdp__ui__object.html#a37ad07cb6de3640c693fd1871615aa4f":[58,0,108,30],
-"structremmina__plugin__rdp__ui__object.html#a46d939889fba73c1360f924efaa09262":[58,0,108,25],
-"structremmina__plugin__rdp__ui__object.html#a4712a1768972b9bf133a14ab8449e3d9":[58,0,108,13],
-"structremmina__plugin__rdp__ui__object.html#a486522051c55c84a6f96e681a0a1d849":[58,0,108,9],
-"structremmina__plugin__rdp__ui__object.html#a4957c6f98162b80c23f1915a0e46d0f1":[58,0,108,0],
-"structremmina__plugin__rdp__ui__object.html#a52a19044a33b92539c0da3ac415715ed":[58,0,108,14],
-"structremmina__plugin__rdp__ui__object.html#a5375267e5c5285fbaf47ed22566e68c6":[58,0,108,22],
-"structremmina__plugin__rdp__ui__object.html#a542b03a0ccf850b32a8a104d0aec5db0":[58,0,108,5],
-"structremmina__plugin__rdp__ui__object.html#a600a961eb4d48146721b10581145c20c":[58,0,108,15],
-"structremmina__plugin__rdp__ui__object.html#a64657b5e71205d98805ca66b01bfae3c":[58,0,108,3],
-"structremmina__plugin__rdp__ui__object.html#a66cdf13076e9a6b0c8d4e73a2e565c60":[58,0,108,20],
-"structremmina__plugin__rdp__ui__object.html#a66db9fbb717f51e73ef57698a0193475":[58,0,108,23],
-"structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24":[58,0,108,17],
-"structremmina__plugin__rdp__ui__object.html#a74da66442390d9a11361ff3128f5b43d":[58,0,108,29],
-"structremmina__plugin__rdp__ui__object.html#a7cd6e67a6db5b187bb5e820e840b528c":[58,0,108,32],
-"structremmina__plugin__rdp__ui__object.html#a7e6c46b985270ee34b4347023a47612e":[58,0,108,11],
-"structremmina__plugin__rdp__ui__object.html#a80204884d38205f633551386e14d2ceb":[58,0,108,12],
-"structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070":[58,0,108,24],
-"structremmina__plugin__rdp__ui__object.html#a87d27be6d29a42e284192bad1a6f1a32":[58,0,108,7],
-"structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee":[58,0,108,18],
-"structremmina__plugin__rdp__ui__object.html#aaa49d1f558659bbf384142071a94991b":[58,0,108,28],
-"structremmina__plugin__rdp__ui__object.html#ab0223592e68f270b22632c83c300cac9":[58,0,108,31],
-"structremmina__plugin__rdp__ui__object.html#ab65c695a6089cb396a239ceb3b39416a":[58,0,108,1],
-"structremmina__plugin__rdp__ui__object.html#ab83d6365bee86707a38dc69cdb2e34db":[58,0,108,4],
-"structremmina__plugin__rdp__ui__object.html#ac598f6590d49658979b1de7bb57ab725":[58,0,108,27],
-"structremmina__plugin__rdp__ui__object.html#ac79fcbbcd9a64a242751bdf5bc0ba42b":[58,0,108,8],
-"structremmina__plugin__rdp__ui__object.html#ac89629727b6148bc512fdd788cc2a559":[58,0,108,10],
-"structremmina__plugin__rdp__ui__object.html#aca09eff5589ea5440e4ecff99879a509":[58,0,108,21],
-"structremmina__plugin__rdp__ui__object.html#acef425d73af8935a8bc784d56f7b125c":[58,0,108,16],
-"structremmina__plugin__rdp__ui__object.html#adf7d8214e7d5c835e78964304c9dbb02":[58,0,108,2],
-"structremmina__plugin__rdp__ui__object.html#af71a15df51ec1e4aeb4b2cd482f21181":[58,0,108,6],
-"structremmina__protocol__widget__dialog__mt__data__t.html":[58,0,109],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7":[58,0,109,4],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361":[58,0,109,1],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5":[58,0,109,9],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf":[58,0,109,8],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74":[58,0,109,11],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850":[58,0,109,2],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544":[58,0,109,10],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f":[58,0,109,0],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8":[58,0,109,6],
-"structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda":[58,0,109,7],
-"structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a":[58,0,109,5],
-"structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28":[58,0,109,3],
-"structrf__bitmap.html":[58,0,112],
-"structrf__bitmap.html#a08e94dc9aafd15be33ce3094dd77f507":[58,0,112,0],
-"structrf__bitmap.html#a52c9e53fa5dd0b9ab9be3622196ca80b":[58,0,112,2],
-"structrf__bitmap.html#a6210ab69c4338e23396f6838a255a50b":[58,0,112,1],
-"structrf__clipboard.html":[58,0,113],
-"structrf__clipboard.html#a19d94ab0c58925408c8c7663dfd180ee":[58,0,113,9],
-"structrf__clipboard.html#a267035cf20278f9df7cddb7e8fcce589":[58,0,113,12],
-"structrf__clipboard.html#a268b5336ae92d8d2f54c5ee441325d68":[58,0,113,8],
-"structrf__clipboard.html#a52ca364a1902d7f4095234923feed724":[58,0,113,4],
-"structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205":[58,0,113,15],
-"structrf__clipboard.html#a66caa2e83dfdc4655df71d81502f93e3":[58,0,113,7],
-"structrf__clipboard.html#a773214c0bb4f351a609a085f786304aa":[58,0,113,5],
-"structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7":[58,0,113,14],
-"structrf__clipboard.html#ad22c0f3cd325db2746e9ca42cca0d65b":[58,0,113,6],
-"structrf__clipboard.html#ad7541d40ba2e4463c36ffab12cfe3adf":[58,0,113,13],
-"structrf__clipboard.html#ae14721fd73459cc2be441c96f5a96be7":[58,0,113,11],
-"structrf__clipboard.html#aed59c73dc8dafbc915eb7db687221e89":[58,0,113,10],
-"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643a4b0fb5c70fe8ee6bbd80cb085f8571a1":[58,0,113,0],
-"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643aac2dccc58111570a94b8ec7475a8110e":[58,0,113,1],
-"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643af9766a14efb1de3fd44ed4fb71622e5b":[58,0,113,2],
-"structrf__clipboard.html#af85bab349549714dc18a8938ac60926d":[58,0,113,3],
-"structrf__context.html":[58,0,114],
-"structrf__context.html#a05f37c213b04dfb9ae9b38c12bcdf7e3":[58,0,114,28],
-"structrf__context.html#a0ae7b9fee3a645d77cf90c8a22f0d90f":[58,0,114,31],
-"structrf__context.html#a1bb1d1fcc3e6e813ee98f4fe4ce4f3b8":[58,0,114,8],
-"structrf__context.html#a23192b58404d1dc629d5e7db3fb103be":[58,0,114,11],
-"structrf__context.html#a28d215e4ddb5decc543c3c6578df5e3d":[58,0,114,41],
-"structrf__context.html#a2a708b989f3e12af802ab4266af39363":[58,0,114,16],
-"structrf__context.html#a335c40ccb90ae472525b203c832e7701":[58,0,114,27]
+"structmpchanger__params.html#a90af95c96a92c2aff1c2ab4be2e40f5c":[58,0,87,3],
+"structmpchanger__params.html#aaccae78b49c585d0a4d34776152ae5a2":[58,0,87,0],
+"structmpchanger__params.html#ab39b307ec320e66e34dd5b6a8c56d348":[58,0,87,9],
+"structmpchanger__params.html#ab46251204997d3d363681557f99e66ce":[58,0,87,8],
+"structmpchanger__params.html#ac8fdacd94418731904020ff679475918":[58,0,87,19],
+"structmpchanger__params.html#ac9c16b65f1d27a62e2622b79f1aaf7bd":[58,0,87,21],
+"structmpchanger__params.html#acd1ad765997b06feec54fa746d5b4d2b":[58,0,87,5],
+"structmpchanger__params.html#ace846a15a537aecd0de2a17a1203c809":[58,0,87,12],
+"structmpchanger__params.html#adc26bfabbc7c02beb1df988801c7972d":[58,0,87,10],
+"structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568":[58,0,87,2],
+"structmpchanger__params.html#ae582e14f2f790ea6bfdf81d5920e51ed":[58,0,87,4],
+"structon_main_thread__cb__data.html":[58,0,89],
+"structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8":[58,0,89,10],
+"structon_main_thread__cb__data.html#a2990bfbbb713d7d300b121327dc179bdaf505d0b00d46515c4ab37b643567af41":[58,0,89,0],
+"structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4":[58,0,89,9],
+"structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75":[58,0,89,2],
+"structon_main_thread__cb__data.html#a8bf0f89b3c961ac28ccae9a9e1060db4":[58,0,89,12],
+"structon_main_thread__cb__data.html#a92fd0bfc7715dcb8237a002850701222":[58,0,89,13],
+"structon_main_thread__cb__data.html#aa01cccfd573952ec0cd5df823e2d8f74":[58,0,89,6],
+"structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38":[58,0,89,3],
+"structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc":[58,0,89,1],
+"structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc":[58,0,89,7],
+"structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb":[58,0,89,5],
+"structon_main_thread__cb__data.html#aeb3812987b358af65f087a5c063814f6":[58,0,89,4],
+"structon_main_thread__cb__data.html#aec2ab8de1fa3f948ada7bd70ce2b353f":[58,0,89,14],
+"structon_main_thread__cb__data.html#af0d50114cec8cfdd7692a39c1fdba783":[58,0,89,11],
+"structon_main_thread__cb__data.html#af55aa025154991f8c762e93074eec242":[58,0,89,8],
+"structregion.html":[58,0,103],
+"structregion.html#a3b8e9f37558f5a790945b9dc1cbcadb6":[58,0,103,1],
+"structregion.html#a585e1a437e6e8f8a80785aec2f2762c8":[58,0,103,0],
+"structregion.html#a97015e361d0cbedf7dcab10fbea95b10":[58,0,103,3],
+"structregion.html#ad258e7b02e819b46656294de5e4bd8ad":[58,0,103,2],
+"structremmina__masterthread__exec__data.html":[58,0,104],
+"structremmina__masterthread__exec__data.html#a00585ef650a083f1e8270cbdf05d437f":[58,0,104,28],
+"structremmina__masterthread__exec__data.html#a02bfd27b9d74423a89c656e4ebbfa77d":[58,0,104,17],
+"structremmina__masterthread__exec__data.html#a02cdefa13335a3bf35a16791b2af0910":[58,0,104,52],
+"structremmina__masterthread__exec__data.html#a070d5e12c3eede1d1799d83c433f9abd":[58,0,104,51],
+"structremmina__masterthread__exec__data.html#a0725f553412b93c289f10bd2a49a112b":[58,0,104,16],
+"structremmina__masterthread__exec__data.html#a0bf7d0588171676f9801e40ccea9e2f1":[58,0,104,55],
+"structremmina__masterthread__exec__data.html#a24956c80352de0631eed5e61138c55d1":[58,0,104,56],
+"structremmina__masterthread__exec__data.html#a2609267a5c4dcf8b9cbe411ee51656d9":[58,0,104,20],
+"structremmina__masterthread__exec__data.html#a2852b6a6de556164946570c4d7786ece":[58,0,104,40],
+"structremmina__masterthread__exec__data.html#a3b8dfbacdde21a1a75007cde8e31bfd6":[58,0,104,38],
+"structremmina__masterthread__exec__data.html#a41d44d1cc03512701f61bb88a983e94b":[58,0,104,41],
+"structremmina__masterthread__exec__data.html#a41fe769268faa363a261ac4ce02ac35e":[58,0,104,53],
+"structremmina__masterthread__exec__data.html#a46c919e7c8529074e19f46cf1b545f97":[58,0,104,36],
+"structremmina__masterthread__exec__data.html#a670e48a166439326cb75d31499b19ec1":[58,0,104,31],
+"structremmina__masterthread__exec__data.html#a6a00bf7132ed6d4923bd239acb073ace":[58,0,104,15],
+"structremmina__masterthread__exec__data.html#a75007c472a404959a00cdebd8efc951a":[58,0,104,37],
+"structremmina__masterthread__exec__data.html#a7e5f81e4664c33357afb259919a1dad0":[58,0,104,58],
+"structremmina__masterthread__exec__data.html#a8037aefe9dcee17afe1b14166800a668":[58,0,104,19],
+"structremmina__masterthread__exec__data.html#a83087d1f4af27c63ec04ee91cb85d050":[58,0,104,32],
+"structremmina__masterthread__exec__data.html#a85a0c3a54c87297e585fac9d52cd83c1":[58,0,104,27],
+"structremmina__masterthread__exec__data.html#a967491ec9115ba8e0d4603017fc439a6":[58,0,104,29],
+"structremmina__masterthread__exec__data.html#a9a7d8ee3e4b091baee9167892b18e0de":[58,0,104,57],
+"structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15":[58,0,104,47],
+"structremmina__masterthread__exec__data.html#aacac54eb2616abc1a48d52f1cdcddf40":[58,0,104,24],
+"structremmina__masterthread__exec__data.html#ab2d4a59a7498371e4a12516a4d4349c9":[58,0,104,34],
+"structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1":[58,0,104,25],
+"structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1":[58,0,104,46],
+"structremmina__masterthread__exec__data.html#abbe5b4e21ccb693a6505c958e150984b":[58,0,104,50],
+"structremmina__masterthread__exec__data.html#abea1e7f8f2ed7639f59907b622fba688":[58,0,104,33],
+"structremmina__masterthread__exec__data.html#ac390f60a6ecc7312c7e4cbc1c4de0a63":[58,0,104,14],
+"structremmina__masterthread__exec__data.html#ac6b3f7b8019945e2f0c8039f7a78fed6":[58,0,104,23],
+"structremmina__masterthread__exec__data.html#ac76a0900842e936efdd2add9ec352886":[58,0,104,21],
+"structremmina__masterthread__exec__data.html#aca5558e097d2874a89f561a14bdd407c":[58,0,104,26],
+"structremmina__masterthread__exec__data.html#ad02dd3e2c0839ed5dda61b49a4377eb9":[58,0,104,43],
+"structremmina__masterthread__exec__data.html#ad52781108d6219754fdff16e0e1764ea":[58,0,104,54],
+"structremmina__masterthread__exec__data.html#ad5d676070c4a9c71302eb6052b20b6d9":[58,0,104,35],
+"structremmina__masterthread__exec__data.html#ad6766566c40f5265a8ec504e56951319":[58,0,104,42],
+"structremmina__masterthread__exec__data.html#ad918fe1f14834f71a7a55bdee0c9a543":[58,0,104,44],
+"structremmina__masterthread__exec__data.html#ad967414b3a4f021b073529a6e9c48d61":[58,0,104,30],
+"structremmina__masterthread__exec__data.html#addc82d31b5441f2bf02630b9ddbe7fdb":[58,0,104,59],
+"structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c":[58,0,104,48],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa03356bb429da6e0c543c2adfb847ee09":[58,0,104,7],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa1331403ed8055144287216d142f28b8d":[58,0,104,1],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa193782f6e0bc603b42a48f7d69695605":[58,0,104,13],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa1b51f5190ad4e06f321f04a2db473567":[58,0,104,8],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa205a5666cfb0bc3b52f5a3381438fc10":[58,0,104,3],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa4fe813264ce7f8e0058367fb2aa6f537":[58,0,104,2],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa5b6ab364fe22ab02ca15a3bcb623e51d":[58,0,104,4],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa5e804a7591adc595d0c2a7b71e5ae809":[58,0,104,10],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fa71a775d97b8e9f6d65a55a39d44f8cf9":[58,0,104,6],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366faa9f7b90d8342bbf70596ff681807b06a":[58,0,104,0],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366faab4371b747f964dc6c16b0d1fffd2d82":[58,0,104,5],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fab4dd05cf9f03d3aa0828011c3340a197":[58,0,104,9],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fab780338a09c368a8096c0718cdcdcc60":[58,0,104,12],
+"structremmina__masterthread__exec__data.html#ae5951fca8e8142713d9af8243338366fae671acc3a3fc86225289bc2614f52a8b":[58,0,104,11],
+"structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07":[58,0,104,49],
+"structremmina__masterthread__exec__data.html#aebeb1a8332f2e1ce5264bf73348bdffd":[58,0,104,18],
+"structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658":[58,0,104,45],
+"structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af":[58,0,104,39],
+"structremmina__masterthread__exec__data.html#af4aac360c396741c659474158d7c0e87":[58,0,104,22],
+"structremmina__plugin__rdp__event.html":[58,0,105],
+"structremmina__plugin__rdp__event.html#a008a5e7caebab7b0a5d4f6a48b4c63f6":[58,0,105,0],
+"structremmina__plugin__rdp__event.html#a02c2d40efeac883dcc6294be9782e082":[58,0,105,17],
+"structremmina__plugin__rdp__event.html#a0ff77bb8ed355ac55a7dc4ab28a02649":[58,0,105,10],
+"structremmina__plugin__rdp__event.html#a18cb50afaa8b9df1759f87899892fdb6":[58,0,105,12],
+"structremmina__plugin__rdp__event.html#a2822d7acc35ca8ecc5afb4c44b1ac117":[58,0,105,13],
+"structremmina__plugin__rdp__event.html#a2f6b6cb00f2511b7849654b026cfd105":[58,0,105,26],
+"structremmina__plugin__rdp__event.html#a30115ccc01062368d9b1189a0f378f57":[58,0,105,6],
+"structremmina__plugin__rdp__event.html#a699aeed24ff4a648e00aced7a1e3adf6":[58,0,105,14],
+"structremmina__plugin__rdp__event.html#a6c91276b122d70b8e723e046f6dbd151":[58,0,105,11],
+"structremmina__plugin__rdp__event.html#a72cd3fa2cc46eb03de7f68d63b2646b2":[58,0,105,2],
+"structremmina__plugin__rdp__event.html#a7a1c9ce96d50f8902f7504bbfd0a057b":[58,0,105,23],
+"structremmina__plugin__rdp__event.html#a7cee906e36975da3aadf6874da5da49c":[58,0,105,8],
+"structremmina__plugin__rdp__event.html#a81b19d4696e8a38139182113d5d741ba":[58,0,105,20],
+"structremmina__plugin__rdp__event.html#a84797e0cdf4484432740a8946325f126":[58,0,105,22],
+"structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764":[58,0,105,21],
+"structremmina__plugin__rdp__event.html#aab8e2356f6619d11ecc80b8b767ca815":[58,0,105,18],
+"structremmina__plugin__rdp__event.html#ab1ee38a965bda260c81a55eedbd97114":[58,0,105,9],
+"structremmina__plugin__rdp__event.html#ab834752f9089cbc4a8841fdc037aa094":[58,0,105,24],
+"structremmina__plugin__rdp__event.html#ac8972b1def0a956b7c36534da0e56b3b":[58,0,105,25],
+"structremmina__plugin__rdp__event.html#acc5ea94958152ae483d269a28f34b0b0":[58,0,105,4],
+"structremmina__plugin__rdp__event.html#ad3b01f14f235b582b54aa9a0057d5c1c":[58,0,105,16],
+"structremmina__plugin__rdp__event.html#ad8c508c65e9f84c92f2f817eb7be2985":[58,0,105,5],
+"structremmina__plugin__rdp__event.html#ada88729499d8df4337a81d1cd5bcd7bf":[58,0,105,15],
+"structremmina__plugin__rdp__event.html#ae1093ce4f4e4e4b632ca4704ecfa698e":[58,0,105,7],
+"structremmina__plugin__rdp__event.html#af02b51a258600a3c4f6d57e868dc39cf":[58,0,105,27],
+"structremmina__plugin__rdp__event.html#af62c17a8001e045d3f9e781a0a5089ef":[58,0,105,19],
+"structremmina__plugin__rdp__event.html#af6744820a897cbe91a79cf3e78b3e494":[58,0,105,1],
+"structremmina__plugin__rdp__event.html#af9cd4e060d42600c8a9089b04612a624":[58,0,105,3],
+"structremmina__plugin__rdp__keymap__entry.html":[58,0,106],
+"structremmina__plugin__rdp__keymap__entry.html#a20d8c7c462c3cb173e3baedbc19a8a88":[58,0,106,0],
+"structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1":[58,0,106,1],
+"structremmina__plugin__rdp__ui__object.html":[58,0,107],
+"structremmina__plugin__rdp__ui__object.html#a01791c6ee1e4e9c8298404fdd5a397c7":[58,0,107,19],
+"structremmina__plugin__rdp__ui__object.html#a2f43ecee45e4cd2313353fd596a7b589":[58,0,107,26],
+"structremmina__plugin__rdp__ui__object.html#a37ad07cb6de3640c693fd1871615aa4f":[58,0,107,30],
+"structremmina__plugin__rdp__ui__object.html#a46d939889fba73c1360f924efaa09262":[58,0,107,25],
+"structremmina__plugin__rdp__ui__object.html#a4712a1768972b9bf133a14ab8449e3d9":[58,0,107,13],
+"structremmina__plugin__rdp__ui__object.html#a486522051c55c84a6f96e681a0a1d849":[58,0,107,9],
+"structremmina__plugin__rdp__ui__object.html#a4957c6f98162b80c23f1915a0e46d0f1":[58,0,107,0],
+"structremmina__plugin__rdp__ui__object.html#a52a19044a33b92539c0da3ac415715ed":[58,0,107,14],
+"structremmina__plugin__rdp__ui__object.html#a5375267e5c5285fbaf47ed22566e68c6":[58,0,107,22],
+"structremmina__plugin__rdp__ui__object.html#a542b03a0ccf850b32a8a104d0aec5db0":[58,0,107,5],
+"structremmina__plugin__rdp__ui__object.html#a600a961eb4d48146721b10581145c20c":[58,0,107,15],
+"structremmina__plugin__rdp__ui__object.html#a64657b5e71205d98805ca66b01bfae3c":[58,0,107,3],
+"structremmina__plugin__rdp__ui__object.html#a66cdf13076e9a6b0c8d4e73a2e565c60":[58,0,107,20],
+"structremmina__plugin__rdp__ui__object.html#a66db9fbb717f51e73ef57698a0193475":[58,0,107,23],
+"structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24":[58,0,107,17],
+"structremmina__plugin__rdp__ui__object.html#a74da66442390d9a11361ff3128f5b43d":[58,0,107,29],
+"structremmina__plugin__rdp__ui__object.html#a7cd6e67a6db5b187bb5e820e840b528c":[58,0,107,32],
+"structremmina__plugin__rdp__ui__object.html#a7e6c46b985270ee34b4347023a47612e":[58,0,107,11],
+"structremmina__plugin__rdp__ui__object.html#a80204884d38205f633551386e14d2ceb":[58,0,107,12],
+"structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070":[58,0,107,24],
+"structremmina__plugin__rdp__ui__object.html#a87d27be6d29a42e284192bad1a6f1a32":[58,0,107,7],
+"structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee":[58,0,107,18],
+"structremmina__plugin__rdp__ui__object.html#aaa49d1f558659bbf384142071a94991b":[58,0,107,28],
+"structremmina__plugin__rdp__ui__object.html#ab0223592e68f270b22632c83c300cac9":[58,0,107,31],
+"structremmina__plugin__rdp__ui__object.html#ab65c695a6089cb396a239ceb3b39416a":[58,0,107,1],
+"structremmina__plugin__rdp__ui__object.html#ab83d6365bee86707a38dc69cdb2e34db":[58,0,107,4],
+"structremmina__plugin__rdp__ui__object.html#ac598f6590d49658979b1de7bb57ab725":[58,0,107,27],
+"structremmina__plugin__rdp__ui__object.html#ac79fcbbcd9a64a242751bdf5bc0ba42b":[58,0,107,8],
+"structremmina__plugin__rdp__ui__object.html#ac89629727b6148bc512fdd788cc2a559":[58,0,107,10],
+"structremmina__plugin__rdp__ui__object.html#aca09eff5589ea5440e4ecff99879a509":[58,0,107,21],
+"structremmina__plugin__rdp__ui__object.html#acef425d73af8935a8bc784d56f7b125c":[58,0,107,16],
+"structremmina__plugin__rdp__ui__object.html#adf7d8214e7d5c835e78964304c9dbb02":[58,0,107,2],
+"structremmina__plugin__rdp__ui__object.html#af71a15df51ec1e4aeb4b2cd482f21181":[58,0,107,6],
+"structremmina__protocol__widget__dialog__mt__data__t.html":[58,0,108],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7":[58,0,108,4],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361":[58,0,108,1],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5":[58,0,108,9],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf":[58,0,108,8],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74":[58,0,108,11],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850":[58,0,108,2],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544":[58,0,108,10],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f":[58,0,108,0],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8":[58,0,108,6],
+"structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda":[58,0,108,7],
+"structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a":[58,0,108,5],
+"structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28":[58,0,108,3],
+"structrf__bitmap.html":[58,0,111],
+"structrf__bitmap.html#a08e94dc9aafd15be33ce3094dd77f507":[58,0,111,0],
+"structrf__bitmap.html#a52c9e53fa5dd0b9ab9be3622196ca80b":[58,0,111,2],
+"structrf__bitmap.html#a6210ab69c4338e23396f6838a255a50b":[58,0,111,1],
+"structrf__clipboard.html":[58,0,112],
+"structrf__clipboard.html#a19d94ab0c58925408c8c7663dfd180ee":[58,0,112,9],
+"structrf__clipboard.html#a267035cf20278f9df7cddb7e8fcce589":[58,0,112,12],
+"structrf__clipboard.html#a268b5336ae92d8d2f54c5ee441325d68":[58,0,112,8],
+"structrf__clipboard.html#a52ca364a1902d7f4095234923feed724":[58,0,112,4],
+"structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205":[58,0,112,15],
+"structrf__clipboard.html#a66caa2e83dfdc4655df71d81502f93e3":[58,0,112,7],
+"structrf__clipboard.html#a773214c0bb4f351a609a085f786304aa":[58,0,112,5],
+"structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7":[58,0,112,14],
+"structrf__clipboard.html#ad22c0f3cd325db2746e9ca42cca0d65b":[58,0,112,6],
+"structrf__clipboard.html#ad7541d40ba2e4463c36ffab12cfe3adf":[58,0,112,13],
+"structrf__clipboard.html#ae14721fd73459cc2be441c96f5a96be7":[58,0,112,11],
+"structrf__clipboard.html#aed59c73dc8dafbc915eb7db687221e89":[58,0,112,10],
+"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643a4b0fb5c70fe8ee6bbd80cb085f8571a1":[58,0,112,0],
+"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643aac2dccc58111570a94b8ec7475a8110e":[58,0,112,1],
+"structrf__clipboard.html#af64334241840b1f937c79d1ef71fe643af9766a14efb1de3fd44ed4fb71622e5b":[58,0,112,2],
+"structrf__clipboard.html#af85bab349549714dc18a8938ac60926d":[58,0,112,3],
+"structrf__context.html":[58,0,113],
+"structrf__context.html#a05f37c213b04dfb9ae9b38c12bcdf7e3":[58,0,113,28],
+"structrf__context.html#a0ae7b9fee3a645d77cf90c8a22f0d90f":[58,0,113,31],
+"structrf__context.html#a1bb1d1fcc3e6e813ee98f4fe4ce4f3b8":[58,0,113,8],
+"structrf__context.html#a23192b58404d1dc629d5e7db3fb103be":[58,0,113,11],
+"structrf__context.html#a28d215e4ddb5decc543c3c6578df5e3d":[58,0,113,41],
+"structrf__context.html#a2a708b989f3e12af802ab4266af39363":[58,0,113,16],
+"structrf__context.html#a335c40ccb90ae472525b203c832e7701":[58,0,113,27],
+"structrf__context.html#a3712f6b20462e62a6bb87038e5f10d9d":[58,0,113,22],
+"structrf__context.html#a3836f3c9bc575a05d5b35dbdb3186329":[58,0,113,49],
+"structrf__context.html#a3a32bbd599b6684a3c41db9281863362":[58,0,113,20],
+"structrf__context.html#a3aead7f4d2c4580fcbd25e15679e19c6":[58,0,113,44],
+"structrf__context.html#a3c2ffa55ba97bc70324d61b8cc838e73":[58,0,113,10],
+"structrf__context.html#a40e89e126e5dd96a3f67e6f945a8867b":[58,0,113,5],
+"structrf__context.html#a48f00dfd27805003509b1ab1ebc791b7":[58,0,113,3],
+"structrf__context.html#a4c35800dba8da687f7f56e3bb7a23413":[58,0,113,33],
+"structrf__context.html#a522c742a333cf0603dfa7d06a7376669":[58,0,113,17],
+"structrf__context.html#a538399f42e4454d5a44effbc59ea9091":[58,0,113,40],
+"structrf__context.html#a539feef609228a91c5e54d5da837bb7a":[58,0,113,18],
+"structrf__context.html#a584505347366c40e6efa710353d4264f":[58,0,113,38],
+"structrf__context.html#a5d119b1f108fe84c74e6484d48c2a565":[58,0,113,19],
+"structrf__context.html#a660a5c5ea7256ab6a6486f3e831a9174":[58,0,113,13],
+"structrf__context.html#a72d2a3d60347327237692947df93aea7":[58,0,113,7],
+"structrf__context.html#a7343f17d1aa3e70e112a9c20d6c6a999":[58,0,113,52],
+"structrf__context.html#a76ff7add3727e4a8b82f7b4615f09169":[58,0,113,36],
+"structrf__context.html#a7c4234646c4b584e41e36521b7eab889":[58,0,113,14],
+"structrf__context.html#a8a310c8fad5daf6b9f4d8f854b04a764":[58,0,113,39],
+"structrf__context.html#a9134f0b8a6352cc257e1e91e162efea3":[58,0,113,4],
+"structrf__context.html#a91f20005b39ad9e1073cf25bf6d7c2f2":[58,0,113,45],
+"structrf__context.html#a93dd55d1f081496959f1051d04cc3ba4":[58,0,113,29],
+"structrf__context.html#a957e6f6867170470689210d55770342e":[58,0,113,12],
+"structrf__context.html#a96c4689f6bc062482536038cb3b24e78":[58,0,113,35],
+"structrf__context.html#a9d28c775fe1ee90ad48941d753564a76":[58,0,113,42],
+"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da0b7e911f34ade078b572b43780fc6982":[58,0,113,2],
+"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da2266700ffb95b7f2c38eea7294f6fba6":[58,0,113,1],
+"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da6fd8f1c40304866e0168e9d496c26a68":[58,0,113,0],
+"structrf__context.html#aa0b949ab1e2f06b7d5efeccc924efaee":[58,0,113,32],
+"structrf__context.html#aa13bb4f72f3024d81e9051de4bd65ec0":[58,0,113,6],
+"structrf__context.html#aa574515edb4966117f539d26e26f0a62":[58,0,113,46],
+"structrf__context.html#aa79909e0ac140a3404151a40bed6a6ec":[58,0,113,34],
+"structrf__context.html#aafce196b029d2578151275acd07ccb82":[58,0,113,24],
+"structrf__context.html#ab5ffc4d8ba9d3d8a298414dc8e4efd2a":[58,0,113,30],
+"structrf__context.html#ac1f3330674d320c9d0ae408c551be6b8":[58,0,113,50],
+"structrf__context.html#acacad775c2c168f900deaa6c90481319":[58,0,113,51],
+"structrf__context.html#acee2095e72fb2428c498f62e21800026":[58,0,113,15],
+"structrf__context.html#ad06c1d1a2295fbdf455df0250dfb2523":[58,0,113,9],
+"structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4":[58,0,113,25],
+"structrf__context.html#ada1ddaadc15cc017185d7114cbea4d56":[58,0,113,26],
+"structrf__context.html#adeee1ea1db2e19b99e4deb80b8a6a960":[58,0,113,23],
+"structrf__context.html#adf05df0bd656d71f2a95c39ea96b7c6e":[58,0,113,43],
+"structrf__context.html#ae6190d1c82045bcd08e22ff6e98148a3":[58,0,113,48],
+"structrf__context.html#ae62cc5547984bf11865f93c7d63afdf0":[58,0,113,47],
+"structrf__context.html#aedf6fcd090e6ba788956565ce312ab70":[58,0,113,37],
+"structrf__context.html#af40c80ff8296b9bcc3ac437bf0be55f8":[58,0,113,21],
+"structrf__glyph.html":[58,0,114],
+"structrf__glyph.html#a19abe408a1c2a4c0c27ecddafb60cc22":[58,0,114,1],
+"structrf__glyph.html#ac258216d1331ac44afc01a3329357e94":[58,0,114,0]
};
diff --git a/public/navtreeindex17.js b/public/navtreeindex17.js
index f70529d32..a4cd13a6a 100644
--- a/public/navtreeindex17.js
+++ b/public/navtreeindex17.js
@@ -1,253 +1,253 @@
var NAVTREEINDEX17 =
{
-"structrf__context.html#a3712f6b20462e62a6bb87038e5f10d9d":[58,0,114,22],
-"structrf__context.html#a3836f3c9bc575a05d5b35dbdb3186329":[58,0,114,49],
-"structrf__context.html#a3a32bbd599b6684a3c41db9281863362":[58,0,114,20],
-"structrf__context.html#a3aead7f4d2c4580fcbd25e15679e19c6":[58,0,114,44],
-"structrf__context.html#a3c2ffa55ba97bc70324d61b8cc838e73":[58,0,114,10],
-"structrf__context.html#a40e89e126e5dd96a3f67e6f945a8867b":[58,0,114,5],
-"structrf__context.html#a48f00dfd27805003509b1ab1ebc791b7":[58,0,114,3],
-"structrf__context.html#a4c35800dba8da687f7f56e3bb7a23413":[58,0,114,33],
-"structrf__context.html#a522c742a333cf0603dfa7d06a7376669":[58,0,114,17],
-"structrf__context.html#a538399f42e4454d5a44effbc59ea9091":[58,0,114,40],
-"structrf__context.html#a539feef609228a91c5e54d5da837bb7a":[58,0,114,18],
-"structrf__context.html#a584505347366c40e6efa710353d4264f":[58,0,114,38],
-"structrf__context.html#a5d119b1f108fe84c74e6484d48c2a565":[58,0,114,19],
-"structrf__context.html#a660a5c5ea7256ab6a6486f3e831a9174":[58,0,114,13],
-"structrf__context.html#a72d2a3d60347327237692947df93aea7":[58,0,114,7],
-"structrf__context.html#a7343f17d1aa3e70e112a9c20d6c6a999":[58,0,114,52],
-"structrf__context.html#a76ff7add3727e4a8b82f7b4615f09169":[58,0,114,36],
-"structrf__context.html#a7c4234646c4b584e41e36521b7eab889":[58,0,114,14],
-"structrf__context.html#a8a310c8fad5daf6b9f4d8f854b04a764":[58,0,114,39],
-"structrf__context.html#a9134f0b8a6352cc257e1e91e162efea3":[58,0,114,4],
-"structrf__context.html#a91f20005b39ad9e1073cf25bf6d7c2f2":[58,0,114,45],
-"structrf__context.html#a93dd55d1f081496959f1051d04cc3ba4":[58,0,114,29],
-"structrf__context.html#a957e6f6867170470689210d55770342e":[58,0,114,12],
-"structrf__context.html#a96c4689f6bc062482536038cb3b24e78":[58,0,114,35],
-"structrf__context.html#a9d28c775fe1ee90ad48941d753564a76":[58,0,114,42],
-"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da0b7e911f34ade078b572b43780fc6982":[58,0,114,2],
-"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da2266700ffb95b7f2c38eea7294f6fba6":[58,0,114,1],
-"structrf__context.html#aa0aafcfa61ad736204a06281153f0a5da6fd8f1c40304866e0168e9d496c26a68":[58,0,114,0],
-"structrf__context.html#aa0b949ab1e2f06b7d5efeccc924efaee":[58,0,114,32],
-"structrf__context.html#aa13bb4f72f3024d81e9051de4bd65ec0":[58,0,114,6],
-"structrf__context.html#aa574515edb4966117f539d26e26f0a62":[58,0,114,46],
-"structrf__context.html#aa79909e0ac140a3404151a40bed6a6ec":[58,0,114,34],
-"structrf__context.html#aafce196b029d2578151275acd07ccb82":[58,0,114,24],
-"structrf__context.html#ab5ffc4d8ba9d3d8a298414dc8e4efd2a":[58,0,114,30],
-"structrf__context.html#ac1f3330674d320c9d0ae408c551be6b8":[58,0,114,50],
-"structrf__context.html#acacad775c2c168f900deaa6c90481319":[58,0,114,51],
-"structrf__context.html#acee2095e72fb2428c498f62e21800026":[58,0,114,15],
-"structrf__context.html#ad06c1d1a2295fbdf455df0250dfb2523":[58,0,114,9],
-"structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4":[58,0,114,25],
-"structrf__context.html#ada1ddaadc15cc017185d7114cbea4d56":[58,0,114,26],
-"structrf__context.html#adeee1ea1db2e19b99e4deb80b8a6a960":[58,0,114,23],
-"structrf__context.html#adf05df0bd656d71f2a95c39ea96b7c6e":[58,0,114,43],
-"structrf__context.html#ae6190d1c82045bcd08e22ff6e98148a3":[58,0,114,48],
-"structrf__context.html#ae62cc5547984bf11865f93c7d63afdf0":[58,0,114,47],
-"structrf__context.html#aedf6fcd090e6ba788956565ce312ab70":[58,0,114,37],
-"structrf__context.html#af40c80ff8296b9bcc3ac437bf0be55f8":[58,0,114,21],
-"structrf__glyph.html":[58,0,115],
-"structrf__glyph.html#a19abe408a1c2a4c0c27ecddafb60cc22":[58,0,115,1],
-"structrf__glyph.html#ac258216d1331ac44afc01a3329357e94":[58,0,115,0],
-"structrf__pointer.html":[58,0,116],
-"structrf__pointer.html#a38bbbd6f1e1505c3c04c120d83998bbf":[58,0,116,1],
-"structrf__pointer.html#a6e960686357ad03c023712bdfcef1cf0":[58,0,116,0],
-"structrs_sched_data.html":[58,0,117],
-"structrs_sched_data.html#a1747344f64896feb08c863ec2cf2528e":[58,0,117,2],
-"structrs_sched_data.html#a34966a9585c2e38ec36b3ea41517356f":[58,0,117,3],
-"structrs_sched_data.html#a6f5ced4584fcb4e1f6379249ef967a6b":[58,0,117,0],
-"structrs_sched_data.html#a758a3750f1e3d5e412daf35344f47688":[58,0,117,4],
-"structrs_sched_data.html#aa3dd8912a9d32cb7e5600caea5cc2646":[58,0,117,1],
-"telepathy__channel__handler_8c.html":[59,0,159],
-"telepathy__channel__handler_8c.html#a2b30990f1b0ed8b69a6a81dd597d17bb":[59,0,159,9],
-"telepathy__channel__handler_8c.html#a2ef527ef268168e872486a8d929fa8c9":[59,0,159,8],
-"telepathy__channel__handler_8c.html#a4ede5d9d191e9d1b906054429a36e1bb":[59,0,159,2],
-"telepathy__channel__handler_8c.html#a5609768cd191b759e2e1c3204daf0f84":[59,0,159,1],
-"telepathy__channel__handler_8c.html#a6c4c20f7e570ff32e5ed7b6a41285e2b":[59,0,159,5],
-"telepathy__channel__handler_8c.html#a74693af8c8cbff4c2fb54908d3fee404":[59,0,159,11],
-"telepathy__channel__handler_8c.html#a8242994e64988a4a18b162b7d837f98e":[59,0,159,13],
-"telepathy__channel__handler_8c.html#a9119f529c6953951fedc06c7983fe61e":[59,0,159,7],
-"telepathy__channel__handler_8c.html#ac355eb5905cbdca302a7939e36bbdc6f":[59,0,159,4],
-"telepathy__channel__handler_8c.html#ad357875c68745a28847486b622e1ce3e":[59,0,159,10],
-"telepathy__channel__handler_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,159,14],
-"telepathy__channel__handler_8c.html#ae5596ef18518b35ac215d1dafe7f5537":[59,0,159,3],
-"telepathy__channel__handler_8c.html#ae760fbe6b71a12b70e01b636943550d6":[59,0,159,6],
-"telepathy__channel__handler_8c.html#af46516580c333fdea97f6de9dc0b81f8":[59,0,159,12],
-"telepathy__channel__handler_8c_source.html":[59,0,159],
-"telepathy__channel__handler_8h.html":[59,0,160],
-"telepathy__channel__handler_8h.html#a3b6b67c39029f39b2eee1cd37b29f13c":[59,0,160,0],
-"telepathy__channel__handler_8h_source.html":[59,0,160],
-"telepathy__handler_8c.html":[59,0,161],
-"telepathy__handler_8c.html#a06517aa54c7e917f0358a66565f0013a":[59,0,161,2],
-"telepathy__handler_8c.html#a619278e5d5280fb57065bf11014e81bc":[59,0,161,1],
-"telepathy__handler_8c.html#a6697621c25bec4b85a7e4c8691a72ef8":[59,0,161,0],
-"telepathy__handler_8c.html#a74b0c331f63ae06d690d26a9ab6aa67c":[59,0,161,4],
-"telepathy__handler_8c.html#a8cfb173567d432b97cb622475009abf4":[59,0,161,3],
-"telepathy__handler_8c.html#a9a0d7f717ce6b2d808b18d5da290f3d6":[59,0,161,5],
-"telepathy__handler_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,161,7],
-"telepathy__handler_8c.html#ae71fa1e8591ba79daedb9ad8bc5714c9":[59,0,161,6],
-"telepathy__handler_8c_source.html":[59,0,161],
-"telepathy__handler_8h.html":[59,0,162],
-"telepathy__handler_8h.html#a9a0d7f717ce6b2d808b18d5da290f3d6":[59,0,162,4],
-"telepathy__handler_8h.html#abbc770ec8bf7b54b51010a5afcdfe7d0":[59,0,162,2],
-"telepathy__handler_8h.html#af0b97ca50d22ae4c7f4150f7dfaec924":[59,0,162,3],
-"telepathy__handler_8h_source.html":[59,0,162],
-"telepathy__plugin_8c.html":[59,0,163],
-"telepathy__plugin_8c.html#a1e255408ada3d8096a2bc959a55ae5c0":[59,0,163,4],
-"telepathy__plugin_8c.html#a509c855e1783653e907f8dfe290a5b58":[59,0,163,2],
-"telepathy__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,163,0],
-"telepathy__plugin_8c.html#abe272567d07c7d9bd59c819ab545c356":[59,0,163,1],
-"telepathy__plugin_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,163,3],
-"telepathy__plugin_8c_source.html":[59,0,163],
+"structrf__pointer.html":[58,0,115],
+"structrf__pointer.html#a38bbbd6f1e1505c3c04c120d83998bbf":[58,0,115,1],
+"structrf__pointer.html#a6e960686357ad03c023712bdfcef1cf0":[58,0,115,0],
+"structrs_sched_data.html":[58,0,116],
+"structrs_sched_data.html#a1747344f64896feb08c863ec2cf2528e":[58,0,116,2],
+"structrs_sched_data.html#a34966a9585c2e38ec36b3ea41517356f":[58,0,116,3],
+"structrs_sched_data.html#a6f5ced4584fcb4e1f6379249ef967a6b":[58,0,116,0],
+"structrs_sched_data.html#a758a3750f1e3d5e412daf35344f47688":[58,0,116,4],
+"structrs_sched_data.html#aa3dd8912a9d32cb7e5600caea5cc2646":[58,0,116,1],
+"telepathy__channel__handler_8c.html":[59,0,157],
+"telepathy__channel__handler_8c.html#a2b30990f1b0ed8b69a6a81dd597d17bb":[59,0,157,9],
+"telepathy__channel__handler_8c.html#a2ef527ef268168e872486a8d929fa8c9":[59,0,157,8],
+"telepathy__channel__handler_8c.html#a4ede5d9d191e9d1b906054429a36e1bb":[59,0,157,2],
+"telepathy__channel__handler_8c.html#a5609768cd191b759e2e1c3204daf0f84":[59,0,157,1],
+"telepathy__channel__handler_8c.html#a6c4c20f7e570ff32e5ed7b6a41285e2b":[59,0,157,5],
+"telepathy__channel__handler_8c.html#a74693af8c8cbff4c2fb54908d3fee404":[59,0,157,11],
+"telepathy__channel__handler_8c.html#a8242994e64988a4a18b162b7d837f98e":[59,0,157,13],
+"telepathy__channel__handler_8c.html#a9119f529c6953951fedc06c7983fe61e":[59,0,157,7],
+"telepathy__channel__handler_8c.html#ac355eb5905cbdca302a7939e36bbdc6f":[59,0,157,4],
+"telepathy__channel__handler_8c.html#ad357875c68745a28847486b622e1ce3e":[59,0,157,10],
+"telepathy__channel__handler_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,157,14],
+"telepathy__channel__handler_8c.html#ae5596ef18518b35ac215d1dafe7f5537":[59,0,157,3],
+"telepathy__channel__handler_8c.html#ae760fbe6b71a12b70e01b636943550d6":[59,0,157,6],
+"telepathy__channel__handler_8c.html#af46516580c333fdea97f6de9dc0b81f8":[59,0,157,12],
+"telepathy__channel__handler_8c_source.html":[59,0,157],
+"telepathy__channel__handler_8h.html":[59,0,158],
+"telepathy__channel__handler_8h.html#a3b6b67c39029f39b2eee1cd37b29f13c":[59,0,158,0],
+"telepathy__channel__handler_8h_source.html":[59,0,158],
+"telepathy__handler_8c.html":[59,0,159],
+"telepathy__handler_8c.html#a06517aa54c7e917f0358a66565f0013a":[59,0,159,2],
+"telepathy__handler_8c.html#a619278e5d5280fb57065bf11014e81bc":[59,0,159,1],
+"telepathy__handler_8c.html#a6697621c25bec4b85a7e4c8691a72ef8":[59,0,159,0],
+"telepathy__handler_8c.html#a74b0c331f63ae06d690d26a9ab6aa67c":[59,0,159,4],
+"telepathy__handler_8c.html#a8cfb173567d432b97cb622475009abf4":[59,0,159,3],
+"telepathy__handler_8c.html#a9a0d7f717ce6b2d808b18d5da290f3d6":[59,0,159,5],
+"telepathy__handler_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,159,7],
+"telepathy__handler_8c.html#ae71fa1e8591ba79daedb9ad8bc5714c9":[59,0,159,6],
+"telepathy__handler_8c_source.html":[59,0,159],
+"telepathy__handler_8h.html":[59,0,160],
+"telepathy__handler_8h.html#a9a0d7f717ce6b2d808b18d5da290f3d6":[59,0,160,4],
+"telepathy__handler_8h.html#abbc770ec8bf7b54b51010a5afcdfe7d0":[59,0,160,2],
+"telepathy__handler_8h.html#af0b97ca50d22ae4c7f4150f7dfaec924":[59,0,160,3],
+"telepathy__handler_8h_source.html":[59,0,160],
+"telepathy__plugin_8c.html":[59,0,161],
+"telepathy__plugin_8c.html#a1e255408ada3d8096a2bc959a55ae5c0":[59,0,161,4],
+"telepathy__plugin_8c.html#a509c855e1783653e907f8dfe290a5b58":[59,0,161,2],
+"telepathy__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,161,0],
+"telepathy__plugin_8c.html#abe272567d07c7d9bd59c819ab545c356":[59,0,161,1],
+"telepathy__plugin_8c.html#ad6a9e111bcd9487a6215c417ea70e052":[59,0,161,3],
+"telepathy__plugin_8c_source.html":[59,0,161],
"todo.html":[57],
-"travis-build_8sh.html":[59,0,164],
-"travis-build_8sh_source.html":[59,0,164],
-"types_8h.html":[59,0,165],
-"types_8h.html#a112d7cc6c755209cabb68cf2a62ad515":[59,0,165,3],
-"types_8h.html#a1ace68e95e55a30fcf8b991f52332501":[59,0,165,9],
-"types_8h.html#a341a0a8b6509633809d99348cc3ba486":[59,0,165,12],
-"types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a":[59,0,165,12,0],
-"types_8h.html#a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a":[59,0,165,12,1],
-"types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c":[59,0,165,12,2],
-"types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c":[59,0,165,12,3],
-"types_8h.html#a373ddef8221457d86c64830c26d3f78a":[59,0,165,16],
-"types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724":[59,0,165,16,0],
-"types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef":[59,0,165,16,3],
-"types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d":[59,0,165,16,2],
-"types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd":[59,0,165,16,1],
-"types_8h.html#a3fc3247f5a12b842032241d0cdde9cf4":[59,0,165,7],
-"types_8h.html#a41c04d02e6a15ad17be8065453cc4933":[59,0,165,6],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7":[59,0,165,15],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a113aff9a0339ebe347ddf738d8c1f371":[59,0,165,15,2],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a2f71ac2987eeec94430308f6f36840cd":[59,0,165,15,3],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a8f910597287a73453a5f09ca0037d093":[59,0,165,15,0],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a":[59,0,165,15,1],
-"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7aef0536e2d0186b8cb8d8ba7a4a1a51c3":[59,0,165,15,4],
-"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5":[59,0,165,11],
-"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5a0f06852a7bb0c4d6611a5eb259b1130d":[59,0,165,11,1],
-"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5a28a07360db0262bf2b4777bc5a36c920":[59,0,165,11,2],
-"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5aa2fd1ccd641986130bf9333b760d7ff2":[59,0,165,11,0],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5":[59,0,165,13],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1":[59,0,165,13,3],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf":[59,0,165,13,5],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527":[59,0,165,13,1],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4":[59,0,165,13,0],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7":[59,0,165,13,7],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507":[59,0,165,13,2],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5af727b997d174217f949eb7364704f501":[59,0,165,13,6],
-"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f":[59,0,165,13,4],
-"types_8h.html#a8f1322421fba36f6efb1a01e0626b2b1":[59,0,165,4],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288":[59,0,165,18],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd":[59,0,165,18,0],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a136d17c74813391126815f7c08d6697e":[59,0,165,18,3],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a46086c0047e2ca3b353bc6f0944fecd4":[59,0,165,18,4],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a50903e485f8d4a2c2f98d7dfe4be8047":[59,0,165,18,2],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a65727cbc0caeb3702cfa98f6c57d9718":[59,0,165,18,6],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288a80694dd04b4a5f6b2c3af24e71851ce3":[59,0,165,18,5],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440":[59,0,165,18,7],
-"types_8h.html#ab0b29804e77812ca42752bf4f379a288af7ab6943dcd5d24c6f19733da16d0f18":[59,0,165,18,1],
-"types_8h.html#ade886ceb4d246765dc78cdc7fbabeb74":[59,0,165,5],
-"types_8h.html#ae8d4366a0a98ae5f9b20ead637e73ac8":[59,0,165,8],
-"types_8h.html#aee1a3e130e6991978acd907b52204350":[59,0,165,14],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d":[59,0,165,14,7],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a25c4af05ecfc7053db40ed0997389b91":[59,0,165,14,13],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da":[59,0,165,14,10],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f":[59,0,165,14,9],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92":[59,0,165,14,1],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a68b440d346168aadb6fd728ea394607f":[59,0,165,14,11],
-"types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296":[59,0,165,14,5],
-"types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba":[59,0,165,14,3],
-"types_8h.html#aee1a3e130e6991978acd907b52204350aadb70e5d52a6eccc1aaf6f1428c1fb11":[59,0,165,14,6],
-"types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583":[59,0,165,14,12],
-"types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3":[59,0,165,14,0],
-"types_8h.html#aee1a3e130e6991978acd907b52204350ad9418344a7f597351e3cc5639be78425":[59,0,165,14,4],
-"types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5":[59,0,165,14,8],
-"types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa":[59,0,165,14,2],
-"types_8h.html#aeea5ee1e675368413b6f6ab09883e7de":[59,0,165,17],
-"types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946":[59,0,165,17,2],
-"types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20":[59,0,165,17,1],
-"types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd":[59,0,165,17,0],
-"types_8h.html#afae2f546eaf9ef8a816a804e830055bf":[59,0,165,10],
-"types_8h_source.html":[59,0,165],
-"ubuntu-build_8sh.html":[59,0,166],
-"ubuntu-build_8sh_source.html":[59,0,166],
-"update-translations_8sh.html":[59,0,167],
-"update-translations_8sh_source.html":[59,0,167],
-"vnc__plugin_8c.html":[59,0,168],
-"vnc__plugin_8c.html#a01923764292c3ab42dbcb43a9bb438a5":[59,0,168,67],
-"vnc__plugin_8c.html#a058e64c8178484c3c76da43b9b80d307":[59,0,168,4],
-"vnc__plugin_8c.html#a093245037037f681c4ffe6356d916a02":[59,0,168,27],
-"vnc__plugin_8c.html#a1266cacd4af9e75fb043669f88fbd108":[59,0,168,52],
-"vnc__plugin_8c.html#a14c13d425ace0c90144b0e486e6893b8":[59,0,168,28],
-"vnc__plugin_8c.html#a18ba6738d4a3d84a4a38e45ecc0e704a":[59,0,168,35],
-"vnc__plugin_8c.html#a1aaa1353346af3f9e18347768d5dc5b1":[59,0,168,48],
-"vnc__plugin_8c.html#a1f57bda271e77f086885101650e8d82c":[59,0,168,63],
-"vnc__plugin_8c.html#a285701647495e19a7861c16b594d6c98":[59,0,168,79],
-"vnc__plugin_8c.html#a289d56662190215fffd46338a57133d9":[59,0,168,75],
-"vnc__plugin_8c.html#a29fb120041bcace9f201cbdf3a3f6f2f":[59,0,168,38],
-"vnc__plugin_8c.html#a2b47331cd4f72ee2c69573ffb3142c10":[59,0,168,20],
-"vnc__plugin_8c.html#a2ec48a513b23088125e7363a1832437e":[59,0,168,3],
-"vnc__plugin_8c.html#a317c3aca2102f38bc876c95413701a80":[59,0,168,58],
-"vnc__plugin_8c.html#a390e3b371156197feb518b737a31cc53":[59,0,168,10],
-"vnc__plugin_8c.html#a3ba650386c03a1daa8a46546c81820c4":[59,0,168,45],
-"vnc__plugin_8c.html#a3d316a2257bd539a6d5d0e0247810fe5":[59,0,168,54],
-"vnc__plugin_8c.html#a47762f374c697476aed0a36ed26a0aa1":[59,0,168,34],
-"vnc__plugin_8c.html#a4d672e305030849447b5b8b522d82242":[59,0,168,37],
-"vnc__plugin_8c.html#a4dc4f7fbf26336d69aa468e6d81d9b0a":[59,0,168,29],
-"vnc__plugin_8c.html#a4f528272dda8a3538cbdce39254ecc81":[59,0,168,33],
-"vnc__plugin_8c.html#a50903bb7e69828cee9c16e8367715a42":[59,0,168,23],
-"vnc__plugin_8c.html#a5321b08f070c51b58669fe2187f35bc4":[59,0,168,32],
-"vnc__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,168,11],
-"vnc__plugin_8c.html#a58be4b85cfe9050078599d73df2c21f0":[59,0,168,24],
-"vnc__plugin_8c.html#a5a66b50e38de8f8f7ff4c47455145a61":[59,0,168,18],
-"vnc__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49":[59,0,168,9],
-"vnc__plugin_8c.html#a5e82957848c696045b21f365827e11c7":[59,0,168,16],
-"vnc__plugin_8c.html#a616ad35664d4a399f88a8a84ee89140d":[59,0,168,77],
-"vnc__plugin_8c.html#a624c006e2a475a0944322c7bbdbcb548":[59,0,168,6],
-"vnc__plugin_8c.html#a626a6a09f076b133df208d5bc04233b6":[59,0,168,13],
-"vnc__plugin_8c.html#a64254af45bb17a5a40a3a0383daa3fe7":[59,0,168,68],
-"vnc__plugin_8c.html#a6497b38386d6de20157b0baf75dcbf44":[59,0,168,40],
-"vnc__plugin_8c.html#a6f8fd3a6a5f00aef49bd4e3404be5697":[59,0,168,36],
-"vnc__plugin_8c.html#a7149c702b5beec6fccbf5d4207e0ff55":[59,0,168,61],
-"vnc__plugin_8c.html#a781dfc8cb5371260bbf358fa7d9e3751":[59,0,168,5],
-"vnc__plugin_8c.html#a7bce24c89cf4554a664693a6b5e1a78d":[59,0,168,30],
-"vnc__plugin_8c.html#a7d6c92b318e43b96efddbcaa9400c1f1":[59,0,168,64],
-"vnc__plugin_8c.html#a7f128e63501e5f28aaf50c6d77111b14":[59,0,168,50],
-"vnc__plugin_8c.html#a7fa113e651e76230f66ca23135f2c688":[59,0,168,17],
-"vnc__plugin_8c.html#a80cd2a03f3f695edbb1ac9ee8c680a5c":[59,0,168,44],
-"vnc__plugin_8c.html#a8525912fbb407209875f84448abec8c7":[59,0,168,71],
-"vnc__plugin_8c.html#a8648ba06e3c1b7093147ae9a1c576452":[59,0,168,26],
-"vnc__plugin_8c.html#a885240d470f95a89ac67051da38fa01d":[59,0,168,21],
-"vnc__plugin_8c.html#a8908f48e85693e75dc871ed7e2eb1ddc":[59,0,168,43],
-"vnc__plugin_8c.html#a8b2de0c8917cafa414c0b9ed4c29aee3":[59,0,168,72],
-"vnc__plugin_8c.html#a91cf510208363f5678c65f420d2d0586":[59,0,168,46],
-"vnc__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,168,69],
-"vnc__plugin_8c.html#a954db5d93dbd612c1f64c3a3b05b97ea":[59,0,168,70],
-"vnc__plugin_8c.html#a9573c48df84c26fb7f5fac785a0f7731":[59,0,168,78],
-"vnc__plugin_8c.html#a987d6ebfa00d29578dada803f33d6a99":[59,0,168,31],
-"vnc__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1":[59,0,168,8],
-"vnc__plugin_8c.html#aa09286b99e12ea23e6a6ea14c5488469":[59,0,168,62],
-"vnc__plugin_8c.html#aa0b52e3e065b5042bed7cd9eb0561c5d":[59,0,168,41],
-"vnc__plugin_8c.html#aa6380a77d4119e8ce70c2d46fd60aece":[59,0,168,74],
-"vnc__plugin_8c.html#aacfc4c3693cace69153a6ad95a69495e":[59,0,168,25],
-"vnc__plugin_8c.html#aae5060f94c26073c776213a0ddb0f2a2":[59,0,168,53],
-"vnc__plugin_8c.html#aae9ff42cb268892f94cf7ed3070d4b5a":[59,0,168,15],
-"vnc__plugin_8c.html#ab3bb0ef97fadc9782e47cf1dd011a19d":[59,0,168,49],
-"vnc__plugin_8c.html#ab553977a035eea4d913b2cfaaf49a003":[59,0,168,55],
-"vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e":[59,0,168,7],
-"vnc__plugin_8c.html#ab9cd44cc6ac7467e6c31c3d5fe77ac21":[59,0,168,73],
-"vnc__plugin_8c.html#ac0d402aa12eeef76a267a3b27e85fbb0":[59,0,168,57],
-"vnc__plugin_8c.html#ac25782cb49710754854863dc9500bd57":[59,0,168,76],
-"vnc__plugin_8c.html#aca3ee6dd15dd0da8017a1560e0dc7e0d":[59,0,168,60],
-"vnc__plugin_8c.html#acb2067d0a9a7a7e6d9f26b0357fbf0e1":[59,0,168,59],
-"vnc__plugin_8c.html#ad43b46448de165f501529d6b203ca8ca":[59,0,168,14],
-"vnc__plugin_8c.html#ad67a66a0788c440bd755e300645155c1":[59,0,168,51],
-"vnc__plugin_8c.html#ade7041eba0e97ab146e2bc418982f100":[59,0,168,66],
-"vnc__plugin_8c.html#adf7b4c8b2fa3722af25cc40dc66a83b9":[59,0,168,42],
-"vnc__plugin_8c.html#ae185dbf1d0a8f2f2d225b7f7a2d1deb8":[59,0,168,22],
-"vnc__plugin_8c.html#aea5839c1087d585275c487093112f2ac":[59,0,168,47],
-"vnc__plugin_8c.html#aeba06240e996cdffb95cf9ca4c461449":[59,0,168,19],
-"vnc__plugin_8c.html#aee8a8cf42ad03be152f4f5a751798383":[59,0,168,39],
-"vnc__plugin_8c.html#aeeb18a588e3d003bf3adcaa6eb1697ff":[59,0,168,65],
-"vnc__plugin_8c.html#af1a91949fa5f1c5ff978046e8186a5f8":[59,0,168,12]
+"travis-build_8sh.html":[59,0,162],
+"travis-build_8sh_source.html":[59,0,162],
+"types_8h.html":[59,0,163],
+"types_8h.html#a112d7cc6c755209cabb68cf2a62ad515":[59,0,163,3],
+"types_8h.html#a1ace68e95e55a30fcf8b991f52332501":[59,0,163,9],
+"types_8h.html#a341a0a8b6509633809d99348cc3ba486":[59,0,163,12],
+"types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a":[59,0,163,12,0],
+"types_8h.html#a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a":[59,0,163,12,1],
+"types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c":[59,0,163,12,2],
+"types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c":[59,0,163,12,3],
+"types_8h.html#a373ddef8221457d86c64830c26d3f78a":[59,0,163,16],
+"types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724":[59,0,163,16,0],
+"types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef":[59,0,163,16,3],
+"types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d":[59,0,163,16,2],
+"types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd":[59,0,163,16,1],
+"types_8h.html#a3fc3247f5a12b842032241d0cdde9cf4":[59,0,163,7],
+"types_8h.html#a41c04d02e6a15ad17be8065453cc4933":[59,0,163,6],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7":[59,0,163,15],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a113aff9a0339ebe347ddf738d8c1f371":[59,0,163,15,2],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a2f71ac2987eeec94430308f6f36840cd":[59,0,163,15,3],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a8f910597287a73453a5f09ca0037d093":[59,0,163,15,0],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a":[59,0,163,15,1],
+"types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7aef0536e2d0186b8cb8d8ba7a4a1a51c3":[59,0,163,15,4],
+"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5":[59,0,163,11],
+"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5a0f06852a7bb0c4d6611a5eb259b1130d":[59,0,163,11,1],
+"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5a28a07360db0262bf2b4777bc5a36c920":[59,0,163,11,2],
+"types_8h.html#a72194e64fa2cf72405bda49a9ea3e8e5aa2fd1ccd641986130bf9333b760d7ff2":[59,0,163,11,0],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5":[59,0,163,13],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1":[59,0,163,13,3],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf":[59,0,163,13,5],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527":[59,0,163,13,1],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4":[59,0,163,13,0],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7":[59,0,163,13,7],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507":[59,0,163,13,2],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5af727b997d174217f949eb7364704f501":[59,0,163,13,6],
+"types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f":[59,0,163,13,4],
+"types_8h.html#a8f1322421fba36f6efb1a01e0626b2b1":[59,0,163,4],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288":[59,0,163,18],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd":[59,0,163,18,0],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a136d17c74813391126815f7c08d6697e":[59,0,163,18,3],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a46086c0047e2ca3b353bc6f0944fecd4":[59,0,163,18,4],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a50903e485f8d4a2c2f98d7dfe4be8047":[59,0,163,18,2],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a65727cbc0caeb3702cfa98f6c57d9718":[59,0,163,18,6],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288a80694dd04b4a5f6b2c3af24e71851ce3":[59,0,163,18,5],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440":[59,0,163,18,7],
+"types_8h.html#ab0b29804e77812ca42752bf4f379a288af7ab6943dcd5d24c6f19733da16d0f18":[59,0,163,18,1],
+"types_8h.html#ade886ceb4d246765dc78cdc7fbabeb74":[59,0,163,5],
+"types_8h.html#ae8d4366a0a98ae5f9b20ead637e73ac8":[59,0,163,8],
+"types_8h.html#aee1a3e130e6991978acd907b52204350":[59,0,163,14],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d":[59,0,163,14,7],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a25c4af05ecfc7053db40ed0997389b91":[59,0,163,14,13],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da":[59,0,163,14,10],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f":[59,0,163,14,9],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92":[59,0,163,14,1],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a68b440d346168aadb6fd728ea394607f":[59,0,163,14,11],
+"types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296":[59,0,163,14,5],
+"types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba":[59,0,163,14,3],
+"types_8h.html#aee1a3e130e6991978acd907b52204350aadb70e5d52a6eccc1aaf6f1428c1fb11":[59,0,163,14,6],
+"types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583":[59,0,163,14,12],
+"types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3":[59,0,163,14,0],
+"types_8h.html#aee1a3e130e6991978acd907b52204350ad9418344a7f597351e3cc5639be78425":[59,0,163,14,4],
+"types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5":[59,0,163,14,8],
+"types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa":[59,0,163,14,2],
+"types_8h.html#aeea5ee1e675368413b6f6ab09883e7de":[59,0,163,17],
+"types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946":[59,0,163,17,2],
+"types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20":[59,0,163,17,1],
+"types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd":[59,0,163,17,0],
+"types_8h.html#afae2f546eaf9ef8a816a804e830055bf":[59,0,163,10],
+"types_8h_source.html":[59,0,163],
+"ubuntu-build_8sh.html":[59,0,164],
+"ubuntu-build_8sh_source.html":[59,0,164],
+"update-translations_8sh.html":[59,0,165],
+"update-translations_8sh_source.html":[59,0,165],
+"vnc__plugin_8c.html":[59,0,166],
+"vnc__plugin_8c.html#a01923764292c3ab42dbcb43a9bb438a5":[59,0,166,67],
+"vnc__plugin_8c.html#a058e64c8178484c3c76da43b9b80d307":[59,0,166,4],
+"vnc__plugin_8c.html#a093245037037f681c4ffe6356d916a02":[59,0,166,27],
+"vnc__plugin_8c.html#a1266cacd4af9e75fb043669f88fbd108":[59,0,166,52],
+"vnc__plugin_8c.html#a14c13d425ace0c90144b0e486e6893b8":[59,0,166,28],
+"vnc__plugin_8c.html#a18ba6738d4a3d84a4a38e45ecc0e704a":[59,0,166,35],
+"vnc__plugin_8c.html#a1aaa1353346af3f9e18347768d5dc5b1":[59,0,166,48],
+"vnc__plugin_8c.html#a1f57bda271e77f086885101650e8d82c":[59,0,166,63],
+"vnc__plugin_8c.html#a285701647495e19a7861c16b594d6c98":[59,0,166,79],
+"vnc__plugin_8c.html#a289d56662190215fffd46338a57133d9":[59,0,166,75],
+"vnc__plugin_8c.html#a29fb120041bcace9f201cbdf3a3f6f2f":[59,0,166,38],
+"vnc__plugin_8c.html#a2b47331cd4f72ee2c69573ffb3142c10":[59,0,166,20],
+"vnc__plugin_8c.html#a2ec48a513b23088125e7363a1832437e":[59,0,166,3],
+"vnc__plugin_8c.html#a317c3aca2102f38bc876c95413701a80":[59,0,166,58],
+"vnc__plugin_8c.html#a390e3b371156197feb518b737a31cc53":[59,0,166,10],
+"vnc__plugin_8c.html#a3ba650386c03a1daa8a46546c81820c4":[59,0,166,45],
+"vnc__plugin_8c.html#a3d316a2257bd539a6d5d0e0247810fe5":[59,0,166,54],
+"vnc__plugin_8c.html#a47762f374c697476aed0a36ed26a0aa1":[59,0,166,34],
+"vnc__plugin_8c.html#a4d672e305030849447b5b8b522d82242":[59,0,166,37],
+"vnc__plugin_8c.html#a4dc4f7fbf26336d69aa468e6d81d9b0a":[59,0,166,29],
+"vnc__plugin_8c.html#a4f528272dda8a3538cbdce39254ecc81":[59,0,166,33],
+"vnc__plugin_8c.html#a50903bb7e69828cee9c16e8367715a42":[59,0,166,23],
+"vnc__plugin_8c.html#a5321b08f070c51b58669fe2187f35bc4":[59,0,166,32],
+"vnc__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,166,11],
+"vnc__plugin_8c.html#a58be4b85cfe9050078599d73df2c21f0":[59,0,166,24],
+"vnc__plugin_8c.html#a5a66b50e38de8f8f7ff4c47455145a61":[59,0,166,18],
+"vnc__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49":[59,0,166,9],
+"vnc__plugin_8c.html#a5e82957848c696045b21f365827e11c7":[59,0,166,16],
+"vnc__plugin_8c.html#a616ad35664d4a399f88a8a84ee89140d":[59,0,166,77],
+"vnc__plugin_8c.html#a624c006e2a475a0944322c7bbdbcb548":[59,0,166,6],
+"vnc__plugin_8c.html#a626a6a09f076b133df208d5bc04233b6":[59,0,166,13],
+"vnc__plugin_8c.html#a64254af45bb17a5a40a3a0383daa3fe7":[59,0,166,68],
+"vnc__plugin_8c.html#a6497b38386d6de20157b0baf75dcbf44":[59,0,166,40],
+"vnc__plugin_8c.html#a6f8fd3a6a5f00aef49bd4e3404be5697":[59,0,166,36],
+"vnc__plugin_8c.html#a7149c702b5beec6fccbf5d4207e0ff55":[59,0,166,61],
+"vnc__plugin_8c.html#a781dfc8cb5371260bbf358fa7d9e3751":[59,0,166,5],
+"vnc__plugin_8c.html#a7bce24c89cf4554a664693a6b5e1a78d":[59,0,166,30],
+"vnc__plugin_8c.html#a7d6c92b318e43b96efddbcaa9400c1f1":[59,0,166,64],
+"vnc__plugin_8c.html#a7f128e63501e5f28aaf50c6d77111b14":[59,0,166,50],
+"vnc__plugin_8c.html#a7fa113e651e76230f66ca23135f2c688":[59,0,166,17],
+"vnc__plugin_8c.html#a80cd2a03f3f695edbb1ac9ee8c680a5c":[59,0,166,44],
+"vnc__plugin_8c.html#a8525912fbb407209875f84448abec8c7":[59,0,166,71],
+"vnc__plugin_8c.html#a8648ba06e3c1b7093147ae9a1c576452":[59,0,166,26],
+"vnc__plugin_8c.html#a885240d470f95a89ac67051da38fa01d":[59,0,166,21],
+"vnc__plugin_8c.html#a8908f48e85693e75dc871ed7e2eb1ddc":[59,0,166,43],
+"vnc__plugin_8c.html#a8b2de0c8917cafa414c0b9ed4c29aee3":[59,0,166,72],
+"vnc__plugin_8c.html#a91cf510208363f5678c65f420d2d0586":[59,0,166,46],
+"vnc__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,166,69],
+"vnc__plugin_8c.html#a954db5d93dbd612c1f64c3a3b05b97ea":[59,0,166,70],
+"vnc__plugin_8c.html#a9573c48df84c26fb7f5fac785a0f7731":[59,0,166,78],
+"vnc__plugin_8c.html#a987d6ebfa00d29578dada803f33d6a99":[59,0,166,31],
+"vnc__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1":[59,0,166,8],
+"vnc__plugin_8c.html#aa09286b99e12ea23e6a6ea14c5488469":[59,0,166,62],
+"vnc__plugin_8c.html#aa0b52e3e065b5042bed7cd9eb0561c5d":[59,0,166,41],
+"vnc__plugin_8c.html#aa6380a77d4119e8ce70c2d46fd60aece":[59,0,166,74],
+"vnc__plugin_8c.html#aacfc4c3693cace69153a6ad95a69495e":[59,0,166,25],
+"vnc__plugin_8c.html#aae5060f94c26073c776213a0ddb0f2a2":[59,0,166,53],
+"vnc__plugin_8c.html#aae9ff42cb268892f94cf7ed3070d4b5a":[59,0,166,15],
+"vnc__plugin_8c.html#ab3bb0ef97fadc9782e47cf1dd011a19d":[59,0,166,49],
+"vnc__plugin_8c.html#ab553977a035eea4d913b2cfaaf49a003":[59,0,166,55],
+"vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e":[59,0,166,7],
+"vnc__plugin_8c.html#ab9cd44cc6ac7467e6c31c3d5fe77ac21":[59,0,166,73],
+"vnc__plugin_8c.html#ac0d402aa12eeef76a267a3b27e85fbb0":[59,0,166,57],
+"vnc__plugin_8c.html#ac25782cb49710754854863dc9500bd57":[59,0,166,76],
+"vnc__plugin_8c.html#aca3ee6dd15dd0da8017a1560e0dc7e0d":[59,0,166,60],
+"vnc__plugin_8c.html#acb2067d0a9a7a7e6d9f26b0357fbf0e1":[59,0,166,59],
+"vnc__plugin_8c.html#ad43b46448de165f501529d6b203ca8ca":[59,0,166,14],
+"vnc__plugin_8c.html#ad67a66a0788c440bd755e300645155c1":[59,0,166,51],
+"vnc__plugin_8c.html#ade7041eba0e97ab146e2bc418982f100":[59,0,166,66],
+"vnc__plugin_8c.html#adf7b4c8b2fa3722af25cc40dc66a83b9":[59,0,166,42],
+"vnc__plugin_8c.html#ae185dbf1d0a8f2f2d225b7f7a2d1deb8":[59,0,166,22],
+"vnc__plugin_8c.html#aea5839c1087d585275c487093112f2ac":[59,0,166,47],
+"vnc__plugin_8c.html#aeba06240e996cdffb95cf9ca4c461449":[59,0,166,19],
+"vnc__plugin_8c.html#aee8a8cf42ad03be152f4f5a751798383":[59,0,166,39],
+"vnc__plugin_8c.html#aeeb18a588e3d003bf3adcaa6eb1697ff":[59,0,166,65],
+"vnc__plugin_8c.html#af1a91949fa5f1c5ff978046e8186a5f8":[59,0,166,12],
+"vnc__plugin_8c.html#af77b4e3099a5d382aa4b840e4aecaadc":[59,0,166,56],
+"vnc__plugin_8c_source.html":[59,0,166],
+"vnc__plugin_8h.html":[59,0,167],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a0662a5bd411f37922da376de06e8fbfd":[59,0,167,8],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a0723d566806911ca2ed79d03214fe4ee":[59,0,167,10],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a1897cf83244e2e2e25c7f32e50a4964f":[59,0,167,7],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a4588937e7ecca9c67f043eabff7de4df":[59,0,167,11],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a98fec12a2047bf22ce4d44b9e0905540":[59,0,167,6],
+"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3aa818c3e00b67a01cdee20db2136a7718":[59,0,167,9],
+"vnc__plugin_8h.html#a323c38c39503620cba03053c071e4ae9":[59,0,167,4],
+"vnc__plugin_8h.html#a674a2c4ec1a9f84a5104f171cd60cc18":[59,0,167,3],
+"vnc__plugin_8h.html#a74ce33a323bd943b8c6749ddc18faa18":[59,0,167,5],
+"vnc__plugin_8h.html#a8a70c9cdaf6821611a3311c0d4797db9":[59,0,167,12],
+"vnc__plugin_8h_source.html":[59,0,167],
+"www__config_8h.html":[59,0,168],
+"www__config_8h_source.html":[59,0,168],
+"www__plugin_8c.html":[59,0,169],
+"www__plugin_8c.html#a05218b821edab542795439a87ad9d909":[59,0,169,5],
+"www__plugin_8c.html#a18fa028449a5d5d455ce6cde7bfd2ef2":[59,0,169,4],
+"www__plugin_8c.html#a1a152b9760d6b4808393569b0409f8b8":[59,0,169,18],
+"www__plugin_8c.html#a282f3f57584e24a15a8a5d5cf5aa8d72":[59,0,169,16],
+"www__plugin_8c.html#a298678121c7123265e772c0b060f5dcb":[59,0,169,20],
+"www__plugin_8c.html#a3874a40164919bc5389d166df691bfdb":[59,0,169,24],
+"www__plugin_8c.html#a3b53d8bbfcf5bdf5564c8804d211cf99":[59,0,169,21],
+"www__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,169,2],
+"www__plugin_8c.html#a73ffad7289c2476a04d7270fa340bee9":[59,0,169,1],
+"www__plugin_8c.html#a9323d1142816fbac8f87545a398a0f71":[59,0,169,10],
+"www__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,169,22],
+"www__plugin_8c.html#a98eddc35144b89bce2e247d5ea49177b":[59,0,169,17],
+"www__plugin_8c.html#aaa970cf06dde51601b91b8d6f936b7ed":[59,0,169,6],
+"www__plugin_8c.html#aab3ceb1ae095823fcbee98ce2811b374":[59,0,169,7],
+"www__plugin_8c.html#ab0a82693798a5534d8657ba9f7634057":[59,0,169,15],
+"www__plugin_8c.html#abc7a556e81fb1152b1e9bc68406b983f":[59,0,169,12],
+"www__plugin_8c.html#ac6b72af8913086b2ec590a675473f2a1":[59,0,169,23],
+"www__plugin_8c.html#adb58ee650d75d952dd5802fbba9e9b0e":[59,0,169,9],
+"www__plugin_8c.html#ae38b4f2efc412b6256221d9a33a03cd4":[59,0,169,19],
+"www__plugin_8c.html#ae6ccaf3df9ea3201521eb62dd9943b00":[59,0,169,11],
+"www__plugin_8c.html#ae8ced85169ca68aae1ed7f14b488e5b8":[59,0,169,25],
+"www__plugin_8c.html#ae91c9382d5bb29416eab7de18c6d6b8d":[59,0,169,13],
+"www__plugin_8c.html#ae9973fcef32044b1238648c4695c3f23":[59,0,169,14],
+"www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea":[59,0,169,3],
+"www__plugin_8c.html#af4c8fa778acc2d2f7dd9418e48c99f19":[59,0,169,8],
+"www__plugin_8c_source.html":[59,0,169],
+"www__plugin_8h.html":[59,0,170],
+"www__plugin_8h.html#a05218b821edab542795439a87ad9d909":[59,0,170,2],
+"www__plugin_8h.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,170,6],
+"www__plugin_8h.html#a98eddc35144b89bce2e247d5ea49177b":[59,0,170,5],
+"www__plugin_8h.html#aab3ceb1ae095823fcbee98ce2811b374":[59,0,170,3],
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9":[59,0,170,0]
};
diff --git a/public/navtreeindex18.js b/public/navtreeindex18.js
index d41f1fdec..370f60e69 100644
--- a/public/navtreeindex18.js
+++ b/public/navtreeindex18.js
@@ -1,158 +1,109 @@
var NAVTREEINDEX18 =
{
-"vnc__plugin_8c.html#af77b4e3099a5d382aa4b840e4aecaadc":[59,0,168,56],
-"vnc__plugin_8c_source.html":[59,0,168],
-"vnc__plugin_8h.html":[59,0,169],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a0662a5bd411f37922da376de06e8fbfd":[59,0,169,8],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a0723d566806911ca2ed79d03214fe4ee":[59,0,169,10],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a1897cf83244e2e2e25c7f32e50a4964f":[59,0,169,7],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a4588937e7ecca9c67f043eabff7de4df":[59,0,169,11],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3a98fec12a2047bf22ce4d44b9e0905540":[59,0,169,6],
-"vnc__plugin_8h.html#a2f80701c36e79c0640d91c788feee0b3aa818c3e00b67a01cdee20db2136a7718":[59,0,169,9],
-"vnc__plugin_8h.html#a323c38c39503620cba03053c071e4ae9":[59,0,169,4],
-"vnc__plugin_8h.html#a674a2c4ec1a9f84a5104f171cd60cc18":[59,0,169,3],
-"vnc__plugin_8h.html#a74ce33a323bd943b8c6749ddc18faa18":[59,0,169,5],
-"vnc__plugin_8h.html#a8a70c9cdaf6821611a3311c0d4797db9":[59,0,169,12],
-"vnc__plugin_8h_source.html":[59,0,169],
-"www__config_8h.html":[59,0,170],
-"www__config_8h_source.html":[59,0,170],
-"www__plugin_8c.html":[59,0,171],
-"www__plugin_8c.html#a05218b821edab542795439a87ad9d909":[59,0,171,5],
-"www__plugin_8c.html#a18fa028449a5d5d455ce6cde7bfd2ef2":[59,0,171,4],
-"www__plugin_8c.html#a1a152b9760d6b4808393569b0409f8b8":[59,0,171,18],
-"www__plugin_8c.html#a282f3f57584e24a15a8a5d5cf5aa8d72":[59,0,171,16],
-"www__plugin_8c.html#a298678121c7123265e772c0b060f5dcb":[59,0,171,20],
-"www__plugin_8c.html#a3874a40164919bc5389d166df691bfdb":[59,0,171,24],
-"www__plugin_8c.html#a3b53d8bbfcf5bdf5564c8804d211cf99":[59,0,171,21],
-"www__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,171,2],
-"www__plugin_8c.html#a73ffad7289c2476a04d7270fa340bee9":[59,0,171,1],
-"www__plugin_8c.html#a9323d1142816fbac8f87545a398a0f71":[59,0,171,10],
-"www__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,171,22],
-"www__plugin_8c.html#a98eddc35144b89bce2e247d5ea49177b":[59,0,171,17],
-"www__plugin_8c.html#aaa970cf06dde51601b91b8d6f936b7ed":[59,0,171,6],
-"www__plugin_8c.html#aab3ceb1ae095823fcbee98ce2811b374":[59,0,171,7],
-"www__plugin_8c.html#ab0a82693798a5534d8657ba9f7634057":[59,0,171,15],
-"www__plugin_8c.html#abc7a556e81fb1152b1e9bc68406b983f":[59,0,171,12],
-"www__plugin_8c.html#ac6b72af8913086b2ec590a675473f2a1":[59,0,171,23],
-"www__plugin_8c.html#adb58ee650d75d952dd5802fbba9e9b0e":[59,0,171,9],
-"www__plugin_8c.html#ae38b4f2efc412b6256221d9a33a03cd4":[59,0,171,19],
-"www__plugin_8c.html#ae6ccaf3df9ea3201521eb62dd9943b00":[59,0,171,11],
-"www__plugin_8c.html#ae8ced85169ca68aae1ed7f14b488e5b8":[59,0,171,25],
-"www__plugin_8c.html#ae91c9382d5bb29416eab7de18c6d6b8d":[59,0,171,13],
-"www__plugin_8c.html#ae9973fcef32044b1238648c4695c3f23":[59,0,171,14],
-"www__plugin_8c.html#af1e5c3cccf8fcfb51c4518462b9b61ea":[59,0,171,3],
-"www__plugin_8c.html#af4c8fa778acc2d2f7dd9418e48c99f19":[59,0,171,8],
-"www__plugin_8c_source.html":[59,0,171],
-"www__plugin_8h.html":[59,0,172],
-"www__plugin_8h.html#a05218b821edab542795439a87ad9d909":[59,0,172,2],
-"www__plugin_8h.html#a9493664f6bdafe3f5b593c3e5e1eacc7":[59,0,172,6],
-"www__plugin_8h.html#a98eddc35144b89bce2e247d5ea49177b":[59,0,172,5],
-"www__plugin_8h.html#aab3ceb1ae095823fcbee98ce2811b374":[59,0,172,3],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9":[59,0,172,0],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a20be7f0ccef7d70651347889eba498a4":[59,0,172,0,3],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a3312508c6e879d0bdda13baf651bc569":[59,0,172,0,1],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a665fa26d2235022f11a2b36b06a885dd":[59,0,172,0,2],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a94ddb3245efc2e8ee4e5944d3d50055b":[59,0,172,0,4],
-"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9ad8a3ee80054a920b92a193c6e84d7b9c":[59,0,172,0,0],
-"www__plugin_8h.html#ad7744b6ffed0a7250dad8d73a1bbdb32":[59,0,172,1],
-"www__plugin_8h.html#ae91c9382d5bb29416eab7de18c6d6b8d":[59,0,172,4],
-"www__plugin_8h_source.html":[59,0,172],
-"www__utils_8c.html":[59,0,173],
-"www__utils_8c.html#a7f5e50e645f4c1c068cd5791080abbbf":[59,0,173,1],
-"www__utils_8c.html#a800f6ee754dd01e00951447c51a9723c":[59,0,173,3],
-"www__utils_8c.html#abeb378938ab3e0b74430601ebc8639aa":[59,0,173,0],
-"www__utils_8c.html#adc2fcc46779fcd3f0fa20dd0e7679069":[59,0,173,4],
-"www__utils_8c.html#aedac74feb0f847081efc43429d5b51cc":[59,0,173,2],
-"www__utils_8c_source.html":[59,0,173],
-"www__utils_8h.html":[59,0,174],
-"www__utils_8h.html#a800f6ee754dd01e00951447c51a9723c":[59,0,174,3],
-"www__utils_8h.html#abeb378938ab3e0b74430601ebc8639aa":[59,0,174,0],
-"www__utils_8h.html#ac464a5cfc7cbce478de11e894a9dea27":[59,0,174,1],
-"www__utils_8h.html#aedac74feb0f847081efc43429d5b51cc":[59,0,174,2],
-"www__utils_8h_source.html":[59,0,174],
-"x2go__plugin_8c.html":[59,0,175],
-"x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134":[59,0,175,31],
-"x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e":[59,0,175,23],
-"x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604":[59,0,175,37],
-"x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850":[59,0,175,25],
-"x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060":[59,0,175,32],
-"x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3":[59,0,175,47],
-"x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a":[59,0,175,55],
-"x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9":[59,0,175,26],
-"x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479":[59,0,175,44],
-"x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d":[59,0,175,42],
-"x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645":[59,0,175,57],
-"x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9":[59,0,175,40],
-"x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43":[59,0,175,13],
-"x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5":[59,0,175,5],
-"x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53":[59,0,175,14],
-"x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7":[59,0,175,46],
-"x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085":[59,0,175,22],
-"x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e":[59,0,175,34],
-"x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422":[59,0,175,30],
-"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05":[59,0,175,9],
-"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f":[59,0,175,9,0],
-"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4":[59,0,175,9,2],
-"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc":[59,0,175,9,1],
-"x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a":[59,0,175,53],
-"x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,175,15],
-"x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68":[59,0,175,61],
-"x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1":[59,0,175,17],
-"x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49":[59,0,175,12],
-"x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2":[59,0,175,58],
-"x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67":[59,0,175,51],
-"x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119":[59,0,175,52],
-"x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f":[59,0,175,63],
-"x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51":[59,0,175,21],
-"x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9":[59,0,175,62],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11":[59,0,175,8],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8":[59,0,175,8,2],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1":[59,0,175,8,0],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d":[59,0,175,8,4],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee":[59,0,175,8,3],
-"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850":[59,0,175,8,1],
-"x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63":[59,0,175,16],
-"x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5":[59,0,175,28],
-"x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38":[59,0,175,27],
-"x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321":[59,0,175,19],
-"x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a":[59,0,175,54],
-"x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26":[59,0,175,20],
-"x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb":[59,0,175,56],
-"x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1":[59,0,175,11],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165":[59,0,175,10],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b":[59,0,175,10,11],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817":[59,0,175,10,8],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0":[59,0,175,10,3],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a":[59,0,175,10,7],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b":[59,0,175,10,1],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94":[59,0,175,10,2],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0":[59,0,175,10,12],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53":[59,0,175,10,9],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961":[59,0,175,10,6],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172":[59,0,175,10,4],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2":[59,0,175,10,13],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a":[59,0,175,10,0],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7":[59,0,175,10,10],
-"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03":[59,0,175,10,5],
-"x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619":[59,0,175,29],
-"x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4":[59,0,175,7],
-"x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a":[59,0,175,33],
-"x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6":[59,0,175,49],
-"x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b":[59,0,175,60],
-"x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a":[59,0,175,18],
-"x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9":[59,0,175,59],
-"x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4":[59,0,175,24],
-"x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6":[59,0,175,50],
-"x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee":[59,0,175,39],
-"x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358":[59,0,175,45],
-"x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11":[59,0,175,43],
-"x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637":[59,0,175,35],
-"x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa":[59,0,175,36],
-"x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b":[59,0,175,6],
-"x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d":[59,0,175,38],
-"x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada":[59,0,175,41],
-"x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a":[59,0,175,48],
-"x2go__plugin_8c_source.html":[59,0,175],
-"x2go__plugin_8h.html":[59,0,176],
-"x2go__plugin_8h_source.html":[59,0,176]
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a20be7f0ccef7d70651347889eba498a4":[59,0,170,0,3],
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a3312508c6e879d0bdda13baf651bc569":[59,0,170,0,1],
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a665fa26d2235022f11a2b36b06a885dd":[59,0,170,0,2],
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9a94ddb3245efc2e8ee4e5944d3d50055b":[59,0,170,0,4],
+"www__plugin_8h.html#accff0b8fc090986bc39b32ed358f03c9ad8a3ee80054a920b92a193c6e84d7b9c":[59,0,170,0,0],
+"www__plugin_8h.html#ad7744b6ffed0a7250dad8d73a1bbdb32":[59,0,170,1],
+"www__plugin_8h.html#ae91c9382d5bb29416eab7de18c6d6b8d":[59,0,170,4],
+"www__plugin_8h_source.html":[59,0,170],
+"www__utils_8c.html":[59,0,171],
+"www__utils_8c.html#a7f5e50e645f4c1c068cd5791080abbbf":[59,0,171,1],
+"www__utils_8c.html#a800f6ee754dd01e00951447c51a9723c":[59,0,171,3],
+"www__utils_8c.html#abeb378938ab3e0b74430601ebc8639aa":[59,0,171,0],
+"www__utils_8c.html#adc2fcc46779fcd3f0fa20dd0e7679069":[59,0,171,4],
+"www__utils_8c.html#aedac74feb0f847081efc43429d5b51cc":[59,0,171,2],
+"www__utils_8c_source.html":[59,0,171],
+"www__utils_8h.html":[59,0,172],
+"www__utils_8h.html#a800f6ee754dd01e00951447c51a9723c":[59,0,172,3],
+"www__utils_8h.html#abeb378938ab3e0b74430601ebc8639aa":[59,0,172,0],
+"www__utils_8h.html#ac464a5cfc7cbce478de11e894a9dea27":[59,0,172,1],
+"www__utils_8h.html#aedac74feb0f847081efc43429d5b51cc":[59,0,172,2],
+"www__utils_8h_source.html":[59,0,172],
+"x2go__plugin_8c.html":[59,0,173],
+"x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134":[59,0,173,31],
+"x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e":[59,0,173,23],
+"x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604":[59,0,173,37],
+"x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850":[59,0,173,25],
+"x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060":[59,0,173,32],
+"x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3":[59,0,173,47],
+"x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a":[59,0,173,55],
+"x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9":[59,0,173,26],
+"x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479":[59,0,173,44],
+"x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d":[59,0,173,42],
+"x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645":[59,0,173,57],
+"x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9":[59,0,173,40],
+"x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43":[59,0,173,13],
+"x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5":[59,0,173,5],
+"x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53":[59,0,173,14],
+"x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7":[59,0,173,46],
+"x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085":[59,0,173,22],
+"x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e":[59,0,173,34],
+"x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422":[59,0,173,30],
+"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05":[59,0,173,9],
+"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f":[59,0,173,9,0],
+"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4":[59,0,173,9,2],
+"x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc":[59,0,173,9,1],
+"x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a":[59,0,173,53],
+"x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208":[59,0,173,15],
+"x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68":[59,0,173,61],
+"x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1":[59,0,173,17],
+"x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49":[59,0,173,12],
+"x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2":[59,0,173,58],
+"x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67":[59,0,173,51],
+"x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119":[59,0,173,52],
+"x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f":[59,0,173,63],
+"x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51":[59,0,173,21],
+"x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9":[59,0,173,62],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11":[59,0,173,8],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8":[59,0,173,8,2],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1":[59,0,173,8,0],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d":[59,0,173,8,4],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee":[59,0,173,8,3],
+"x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850":[59,0,173,8,1],
+"x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63":[59,0,173,16],
+"x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5":[59,0,173,28],
+"x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38":[59,0,173,27],
+"x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321":[59,0,173,19],
+"x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a":[59,0,173,54],
+"x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26":[59,0,173,20],
+"x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb":[59,0,173,56],
+"x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1":[59,0,173,11],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165":[59,0,173,10],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b":[59,0,173,10,11],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817":[59,0,173,10,8],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0":[59,0,173,10,3],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a":[59,0,173,10,7],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b":[59,0,173,10,1],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94":[59,0,173,10,2],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0":[59,0,173,10,12],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53":[59,0,173,10,9],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961":[59,0,173,10,6],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172":[59,0,173,10,4],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2":[59,0,173,10,13],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a":[59,0,173,10,0],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7":[59,0,173,10,10],
+"x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03":[59,0,173,10,5],
+"x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619":[59,0,173,29],
+"x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4":[59,0,173,7],
+"x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a":[59,0,173,33],
+"x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6":[59,0,173,49],
+"x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b":[59,0,173,60],
+"x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a":[59,0,173,18],
+"x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9":[59,0,173,59],
+"x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4":[59,0,173,24],
+"x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6":[59,0,173,50],
+"x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee":[59,0,173,39],
+"x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358":[59,0,173,45],
+"x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11":[59,0,173,43],
+"x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637":[59,0,173,35],
+"x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa":[59,0,173,36],
+"x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b":[59,0,173,6],
+"x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d":[59,0,173,38],
+"x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada":[59,0,173,41],
+"x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a":[59,0,173,48],
+"x2go__plugin_8c_source.html":[59,0,173],
+"x2go__plugin_8h.html":[59,0,174],
+"x2go__plugin_8h_source.html":[59,0,174]
};
diff --git a/public/navtreeindex2.js b/public/navtreeindex2.js
index b098a1614..356430543 100644
--- a/public/navtreeindex2.js
+++ b/public/navtreeindex2.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX2 =
{
-"python__wrapper__protocol_8h.html#ad9e2034841e5b0a10291ad015e4bfc46":[59,0,29,5],
"python__wrapper__protocol_8h_source.html":[59,0,29],
"python__wrapper__protocol__widget_8c.html":[59,0,30],
"python__wrapper__protocol__widget_8c.html#a004f096d606721a81e53ac18e187db0f":[59,0,30,44],
@@ -249,5 +248,6 @@ var NAVTREEINDEX2 =
"rcw_8c.html#a80f465cb910660ded402fb0e7bb3a7fd":[59,0,40,12],
"rcw_8c.html#a818f2fce53d01e503b6a466979aac606":[59,0,40,138],
"rcw_8c.html#a82c93bbb1ab73807b366b86928c37946":[59,0,40,81],
-"rcw_8c.html#a89a2fc0dfcdc5e260cc3af191a7115ee":[59,0,40,114]
+"rcw_8c.html#a89a2fc0dfcdc5e260cc3af191a7115ee":[59,0,40,114],
+"rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3":[59,0,40,64]
};
diff --git a/public/navtreeindex3.js b/public/navtreeindex3.js
index b753aeea8..6d86484d8 100644
--- a/public/navtreeindex3.js
+++ b/public/navtreeindex3.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX3 =
{
-"rcw_8c.html#a8a789be4e849f79bf8064bc47ba85ea3":[59,0,40,64],
"rcw_8c.html#a8af64223778fc6adee796f5d98f17fd6":[59,0,40,67],
"rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527":[59,0,40,26],
"rcw_8c.html#a8ec8f547c27d9bfeb98abab525bb4a76":[59,0,40,130],
@@ -249,5 +248,6 @@ var NAVTREEINDEX3 =
"rdp__plugin_8c.html#a12e0199d082d510648cb27168486f4e0":[59,0,54,15],
"rdp__plugin_8c.html#a16227448ff442f2faacb0156f415d7de":[59,0,54,48],
"rdp__plugin_8c.html#a18f77c3f0788ca8df08ebc80c72b553f":[59,0,54,44],
-"rdp__plugin_8c.html#a1b89199f25081137222e72a4be577ea4":[59,0,54,35]
+"rdp__plugin_8c.html#a1b89199f25081137222e72a4be577ea4":[59,0,54,35],
+"rdp__plugin_8c.html#a1beaae641f40fc4fbcafe84846a2eb76":[59,0,54,6]
};
diff --git a/public/navtreeindex4.js b/public/navtreeindex4.js
index 8193541f0..ceb7ebda3 100644
--- a/public/navtreeindex4.js
+++ b/public/navtreeindex4.js
@@ -1,6 +1,5 @@
var NAVTREEINDEX4 =
{
-"rdp__plugin_8c.html#a1beaae641f40fc4fbcafe84846a2eb76":[59,0,54,6],
"rdp__plugin_8c.html#a1d631ea2efdaff13c9f372fe487d5e4c":[59,0,54,8],
"rdp__plugin_8c.html#a23cb647672c113276cbf86689f2f9054":[59,0,54,28],
"rdp__plugin_8c.html#a2986e5b780a080a8a1e2f8d10ece3ac4":[59,0,54,52],
@@ -136,19 +135,18 @@ var NAVTREEINDEX4 =
"rdp__settings_8h_source.html":[59,0,57],
"remmina_8c.html":[59,0,58],
"remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97":[59,0,58,1],
-"remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a":[59,0,58,5],
"remmina_8c.html#a1ecec6e37469e2e927a612747269587c":[59,0,58,0],
"remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a":[59,0,58,4],
-"remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5":[59,0,58,13],
-"remmina_8c.html#a3d760300165528383af409d2964d79d2":[59,0,58,10],
-"remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1":[59,0,58,6],
-"remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104":[59,0,58,11],
+"remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5":[59,0,58,12],
+"remmina_8c.html#a3d760300165528383af409d2964d79d2":[59,0,58,9],
+"remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1":[59,0,58,5],
+"remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104":[59,0,58,10],
"remmina_8c.html#a9e8319f901232eb5fada98335217979c":[59,0,58,3],
-"remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae":[59,0,58,12],
-"remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1":[59,0,58,9],
-"remmina_8c.html#ae729d4262682c8674b8dd0135014810a":[59,0,58,8],
+"remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae":[59,0,58,11],
+"remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1":[59,0,58,8],
+"remmina_8c.html#ae729d4262682c8674b8dd0135014810a":[59,0,58,7],
"remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914":[59,0,58,2],
-"remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58":[59,0,58,7],
+"remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58":[59,0,58,6],
"remmina_8c_source.html":[59,0,58],
"remmina_8h.html":[59,0,59],
"remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1":[59,0,59,0],
@@ -249,5 +247,7 @@ var NAVTREEINDEX4 =
"remmina__chat__window_8h.html#afac452bad12df11e7d37cfaa07488446":[59,0,69,2],
"remmina__chat__window_8h_source.html":[59,0,69],
"remmina__crypt_8c.html":[59,0,70],
-"remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9":[59,0,70,0]
+"remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9":[59,0,70,0],
+"remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1":[59,0,70,1],
+"remmina__crypt_8c.html#ae097c169aefdd5d83a57fc1bde511171":[59,0,70,2]
};
diff --git a/public/navtreeindex5.js b/public/navtreeindex5.js
index 577083c9a..fbc28d6c9 100644
--- a/public/navtreeindex5.js
+++ b/public/navtreeindex5.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX5 =
{
-"remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1":[59,0,70,1],
-"remmina__crypt_8c.html#ae097c169aefdd5d83a57fc1bde511171":[59,0,70,2],
"remmina__crypt_8c_source.html":[59,0,70],
"remmina__crypt_8h.html":[59,0,71],
"remmina__crypt_8h.html#a04a19371f266a377499c4b0e7c8f32b9":[59,0,71,1],
@@ -249,5 +247,7 @@ var NAVTREEINDEX5 =
"remmina__ftp__client_8c.html#a33e4993b60c36eae89a6a0a943d28141":[59,0,86,43],
"remmina__ftp__client_8c.html#a3872b49a2c0bea73d51d0500c5cee488":[59,0,86,16],
"remmina__ftp__client_8c.html#a3a2dc5070f06ae0fcd25fbfe1587ab5c":[59,0,86,33],
-"remmina__ftp__client_8c.html#a3cb68d802d3c35dff5cee970d3c33bd5":[59,0,86,61]
+"remmina__ftp__client_8c.html#a3cb68d802d3c35dff5cee970d3c33bd5":[59,0,86,61],
+"remmina__ftp__client_8c.html#a437dba2fc4f44f119501e9b53c688dd1":[59,0,86,25],
+"remmina__ftp__client_8c.html#a49d1fee26f8c7fb210b46d83f92b08e2":[59,0,86,13]
};
diff --git a/public/navtreeindex6.js b/public/navtreeindex6.js
index 8a3bb3bed..902363d47 100644
--- a/public/navtreeindex6.js
+++ b/public/navtreeindex6.js
@@ -1,7 +1,5 @@
var NAVTREEINDEX6 =
{
-"remmina__ftp__client_8c.html#a437dba2fc4f44f119501e9b53c688dd1":[59,0,86,25],
-"remmina__ftp__client_8c.html#a49d1fee26f8c7fb210b46d83f92b08e2":[59,0,86,13],
"remmina__ftp__client_8c.html#a4b4e260fb27466bfd66cb55e5b135715":[59,0,86,14],
"remmina__ftp__client_8c.html#a51ca0769a65bac59f16c790eb76330c8":[59,0,86,36],
"remmina__ftp__client_8c.html#a5464ddd2c0af8c518cd2fe647696e7a4":[59,0,86,24],
@@ -180,17 +178,16 @@ var NAVTREEINDEX6 =
"remmina__log_8h.html#ae439b5fb61045d22c9474b32d0158185":[59,0,93,5],
"remmina__log_8h_source.html":[59,0,93],
"remmina__main_8c.html":[59,0,94],
-"remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df":[59,0,94,74],
+"remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df":[59,0,94,73],
"remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1":[59,0,94,40],
-"remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6":[59,0,94,42],
-"remmina__main_8c.html#a0c32fe66988056b353220128611b9116":[59,0,94,58],
-"remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a":[59,0,94,46],
-"remmina__main_8c.html#a10e574723222f5df9db456977e62a093":[59,0,94,49],
-"remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657":[59,0,94,70],
+"remmina__main_8c.html#a0c32fe66988056b353220128611b9116":[59,0,94,57],
+"remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a":[59,0,94,45],
+"remmina__main_8c.html#a10e574723222f5df9db456977e62a093":[59,0,94,48],
+"remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657":[59,0,94,69],
"remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a":[59,0,94,36],
"remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6":[59,0,94,10],
-"remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d":[59,0,94,73],
-"remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277":[59,0,94,56],
+"remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d":[59,0,94,72],
+"remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277":[59,0,94,55],
"remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5":[59,0,94,32],
"remmina__main_8c.html#a31102f8ca7440a22c1514bca17933193":[59,0,94,20],
"remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2":[59,0,94,15],
@@ -205,49 +202,52 @@ var NAVTREEINDEX6 =
"remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d":[59,0,94,6],
"remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ac70d28409ca79aa291cc0e58244f1fe4":[59,0,94,9],
"remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756":[59,0,94,4],
-"remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66":[59,0,94,80],
-"remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db":[59,0,94,62],
-"remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302":[59,0,94,63],
-"remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c":[59,0,94,84],
-"remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1":[59,0,94,48],
+"remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66":[59,0,94,79],
+"remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db":[59,0,94,61],
+"remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302":[59,0,94,62],
+"remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c":[59,0,94,83],
+"remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1":[59,0,94,47],
"remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e":[59,0,94,16],
-"remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c":[59,0,94,61],
-"remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2":[59,0,94,76],
-"remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af":[59,0,94,52],
-"remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a":[59,0,94,45],
-"remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a":[59,0,94,85],
-"remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc":[59,0,94,55],
+"remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c":[59,0,94,60],
+"remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2":[59,0,94,75],
+"remmina__main_8c.html#a52cc21537ff003b9d0fbdb9040c811af":[59,0,94,51],
+"remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a":[59,0,94,44],
+"remmina__main_8c.html#a5ae0372dafe41f96a09097c07d1b270a":[59,0,94,84],
+"remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc":[59,0,94,54],
"remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320":[59,0,94,34],
"remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd":[59,0,94,18],
-"remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d":[59,0,94,47],
-"remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427":[59,0,94,69],
-"remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92":[59,0,94,44],
-"remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a":[59,0,94,57],
+"remmina__main_8c.html#a6b30ed832369f3a7153aa63f98873c9d":[59,0,94,46],
+"remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427":[59,0,94,68],
+"remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92":[59,0,94,43],
+"remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a":[59,0,94,56],
"remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6":[59,0,94,28],
"remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7":[59,0,94,22],
"remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c":[59,0,94,17],
"remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e":[59,0,94,24],
"remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f":[59,0,94,12],
-"remmina__main_8c.html#a802458852abacebfb16f1f4295806a01":[59,0,94,72],
+"remmina__main_8c.html#a802458852abacebfb16f1f4295806a01":[59,0,94,71],
"remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82":[59,0,94,25],
"remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497":[59,0,94,30],
"remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d":[59,0,94,11],
-"remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79":[59,0,94,68],
-"remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda":[59,0,94,89],
-"remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12":[59,0,94,91],
+"remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79":[59,0,94,67],
+"remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda":[59,0,94,88],
+"remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12":[59,0,94,90],
"remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b":[59,0,94,39],
-"remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8":[59,0,94,86],
+"remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8":[59,0,94,85],
"remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c":[59,0,94,14],
-"remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a":[59,0,94,59],
+"remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a":[59,0,94,58],
"remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12":[59,0,94,13],
-"remmina__main_8c.html#aa20963aed43242994c88d5a97a546355":[59,0,94,79],
+"remmina__main_8c.html#aa20963aed43242994c88d5a97a546355":[59,0,94,78],
"remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296":[59,0,94,31],
-"remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2":[59,0,94,66],
+"remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2":[59,0,94,65],
"remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc":[59,0,94,38],
-"remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32":[59,0,94,54],
-"remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c":[59,0,94,88],
-"remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5":[59,0,94,82],
+"remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32":[59,0,94,53],
+"remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c":[59,0,94,87],
+"remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5":[59,0,94,81],
"remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800":[59,0,94,23],
-"remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d":[59,0,94,60],
-"remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589":[59,0,94,81]
+"remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d":[59,0,94,59],
+"remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589":[59,0,94,80],
+"remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89":[59,0,94,89],
+"remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[59,0,94,52],
+"remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10":[59,0,94,21]
};
diff --git a/public/navtreeindex7.js b/public/navtreeindex7.js
index 9d526c449..4e1daf89c 100644
--- a/public/navtreeindex7.js
+++ b/public/navtreeindex7.js
@@ -1,63 +1,59 @@
var NAVTREEINDEX7 =
{
-"remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89":[59,0,94,90],
-"remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[59,0,94,53],
-"remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10":[59,0,94,21],
-"remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1":[59,0,94,51],
+"remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1":[59,0,94,50],
"remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229":[59,0,94,41],
-"remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766":[59,0,94,67],
-"remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee":[59,0,94,77],
+"remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766":[59,0,94,66],
+"remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee":[59,0,94,76],
"remmina__main_8c.html#ac767825cb87a34531306cfb587216d20":[59,0,94,26],
"remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9":[59,0,94,19],
-"remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40":[59,0,94,75],
-"remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7":[59,0,94,83],
-"remmina__main_8c.html#adf073486149762f547504020484bff70":[59,0,94,65],
-"remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc":[59,0,94,43],
-"remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc":[59,0,94,50],
+"remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40":[59,0,94,74],
+"remmina__main_8c.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7":[59,0,94,82],
+"remmina__main_8c.html#adf073486149762f547504020484bff70":[59,0,94,64],
+"remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc":[59,0,94,42],
+"remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc":[59,0,94,49],
"remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4":[59,0,94,29],
"remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf":[59,0,94,37],
-"remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029":[59,0,94,64],
-"remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c":[59,0,94,78],
-"remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3":[59,0,94,87],
+"remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029":[59,0,94,63],
+"remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c":[59,0,94,77],
+"remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3":[59,0,94,86],
"remmina__main_8c.html#af14b1942a754d7b2f5c10266208ebe01":[59,0,94,35],
-"remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f":[59,0,94,71],
+"remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f":[59,0,94,70],
"remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300":[59,0,94,27],
"remmina__main_8c_source.html":[59,0,94],
"remmina__main_8h.html":[59,0,95],
"remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1":[59,0,95,9],
-"remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6":[59,0,95,11],
"remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7":[59,0,95,6],
-"remmina__main_8h.html#a0c32fe66988056b353220128611b9116":[59,0,95,27],
-"remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a":[59,0,95,15],
-"remmina__main_8h.html#a10e574723222f5df9db456977e62a093":[59,0,95,18],
-"remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277":[59,0,95,25],
+"remmina__main_8h.html#a0c32fe66988056b353220128611b9116":[59,0,95,26],
+"remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a":[59,0,95,14],
+"remmina__main_8h.html#a10e574723222f5df9db456977e62a093":[59,0,95,17],
+"remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277":[59,0,95,24],
"remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc":[59,0,95,5],
-"remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1":[59,0,95,17],
+"remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1":[59,0,95,16],
"remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052":[59,0,95,3],
-"remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c":[59,0,95,30],
-"remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5":[59,0,95,31],
-"remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af":[59,0,95,21],
-"remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a":[59,0,95,14],
-"remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a":[59,0,95,35],
-"remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc":[59,0,95,24],
-"remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d":[59,0,95,16],
-"remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92":[59,0,95,13],
-"remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a":[59,0,95,26],
+"remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c":[59,0,95,29],
+"remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5":[59,0,95,30],
+"remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af":[59,0,95,20],
+"remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a":[59,0,95,13],
+"remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a":[59,0,95,34],
+"remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc":[59,0,95,23],
+"remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d":[59,0,95,15],
+"remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92":[59,0,95,12],
+"remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a":[59,0,95,25],
"remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8":[59,0,95,4],
"remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b":[59,0,95,8],
-"remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5":[59,0,95,32],
-"remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a":[59,0,95,28],
+"remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5":[59,0,95,31],
+"remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a":[59,0,95,27],
"remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc":[59,0,95,7],
-"remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32":[59,0,95,23],
-"remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d":[59,0,95,29],
-"remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589":[59,0,95,33],
-"remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[59,0,95,22],
-"remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1":[59,0,95,20],
+"remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32":[59,0,95,22],
+"remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d":[59,0,95,28],
+"remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589":[59,0,95,32],
+"remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8":[59,0,95,21],
+"remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1":[59,0,95,19],
"remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229":[59,0,95,10],
"remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1":[59,0,95,2],
-"remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7":[59,0,95,34],
-"remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc":[59,0,95,12],
-"remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc":[59,0,95,19],
+"remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7":[59,0,95,33],
+"remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc":[59,0,95,11],
+"remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc":[59,0,95,18],
"remmina__main_8h_source.html":[59,0,95],
"remmina__marshals_8c.html":[59,0,96],
"remmina__marshals_8c.html#a01460bf2694cb9ef62f1409d465ae70b":[59,0,96,1],
@@ -249,5 +245,9 @@ var NAVTREEINDEX7 =
"remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743":[59,0,115,28],
"remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267":[59,0,115,9],
"remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714":[59,0,115,14],
-"remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44":[59,0,115,25]
+"remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44":[59,0,115,25],
+"remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290":[59,0,115,27],
+"remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b":[59,0,115,8],
+"remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd":[59,0,115,17],
+"remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02":[59,0,115,24]
};
diff --git a/public/navtreeindex8.js b/public/navtreeindex8.js
index 95ed1fa7d..acf1ac586 100644
--- a/public/navtreeindex8.js
+++ b/public/navtreeindex8.js
@@ -1,9 +1,5 @@
var NAVTREEINDEX8 =
{
-"remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290":[59,0,115,27],
-"remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b":[59,0,115,8],
-"remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd":[59,0,115,17],
-"remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02":[59,0,115,24],
"remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be":[59,0,115,12],
"remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99":[59,0,115,15],
"remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6":[59,0,115,16],
@@ -249,5 +245,9 @@ var NAVTREEINDEX8 =
"remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d":[59,0,120,78],
"remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25":[59,0,120,20],
"remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084":[59,0,120,50],
-"remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d":[59,0,120,53]
+"remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d":[59,0,120,53],
+"remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3":[59,0,120,37],
+"remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1":[59,0,120,34],
+"remmina__protocol__widget_8h.html#a2dbd7c9006318dd027d5a5f0b4f59f26":[59,0,120,3],
+"remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457":[59,0,120,38]
};
diff --git a/public/navtreeindex9.js b/public/navtreeindex9.js
index b1adc5c15..c21e15f5d 100644
--- a/public/navtreeindex9.js
+++ b/public/navtreeindex9.js
@@ -1,9 +1,5 @@
var NAVTREEINDEX9 =
{
-"remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3":[59,0,120,37],
-"remmina__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1":[59,0,120,34],
-"remmina__protocol__widget_8h.html#a2dbd7c9006318dd027d5a5f0b4f59f26":[59,0,120,3],
-"remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457":[59,0,120,38],
"remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923":[59,0,120,27],
"remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a":[59,0,120,57],
"remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380":[59,0,120,70],
@@ -249,5 +245,9 @@ var NAVTREEINDEX9 =
"remmina__ssh_8c_source.html":[59,0,133],
"remmina__ssh_8h.html":[59,0,134],
"remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330":[59,0,134,21],
-"remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188":[59,0,134,17]
+"remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188":[59,0,134,17],
+"remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b":[59,0,134,32],
+"remmina__ssh_8h.html#a1dd627c6195e879ba5ca12f5d590b10d":[59,0,134,7],
+"remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2":[59,0,134,18],
+"remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d":[59,0,134,27]
};
diff --git a/public/rcw_8c_source.html b/public/rcw_8c_source.html
index 0e266dde7..21129932f 100644
--- a/public/rcw_8c_source.html
+++ b/public/rcw_8c_source.html
@@ -117,7 +117,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<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#l00078">rcw.c:78</a></div></div>
<div class="ttc" id="rcw_8c_html_af2f5c8716d84e6223a4b2cbc9efc532b"><div class="ttname"><a href="rcw_8c.html#af2f5c8716d84e6223a4b2cbc9efc532b">rcw_toolbar_fullscreen</a></div><div class="ttdeci">static void rcw_toolbar_fullscreen(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01351">rcw.c:1351</a></div></div>
<div class="ttc" id="rcw_8c_html_a8f8175377bfbda4794674e619ca0fa8b"><div class="ttname"><a href="rcw_8c.html#a8f8175377bfbda4794674e619ca0fa8b">rcw_on_switch_page</a></div><div class="ttdeci">static void rcw_on_switch_page(GtkNotebook *notebook, GtkWidget *newpage, guint page_num, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03645">rcw.c:3645</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>
+<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#l01634">remmina_main.c:1634</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
<div class="ttc" id="rcw_8c_html_acb1b2ab629603837e08f8d8de542316d"><div class="ttname"><a href="rcw_8c.html#acb1b2ab629603837e08f8d8de542316d">rcw_hostkey_func</a></div><div class="ttdeci">static gboolean rcw_hostkey_func(RemminaProtocolWidget *gp, guint keyval, gboolean release)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04045">rcw.c:4045</a></div></div>
<div class="ttc" id="remmina__scrolled__viewport_8c_html_a0ba56f429a9c1ec05b093f5f78be692c"><div class="ttname"><a href="remmina__scrolled__viewport_8c.html#a0ba56f429a9c1ec05b093f5f78be692c">remmina_scrolled_viewport_remove_motion</a></div><div class="ttdeci">void remmina_scrolled_viewport_remove_motion(RemminaScrolledViewport *gsv)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__scrolled__viewport_8c_source.html#l00190">remmina_scrolled_viewport.c:190</a></div></div>
@@ -199,7 +199,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a756830638372adda00be33468c8d3ed2"><div class="ttname"><a href="rcw_8c.html#a756830638372adda00be33468c8d3ed2">nb_find_page_by_cnnobj</a></div><div class="ttdeci">static GtkWidget * nb_find_page_by_cnnobj(GtkNotebook *notebook, RemminaConnectionObject *cnnobj)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03452">rcw.c:3452</a></div></div>
<div class="ttc" id="struct___remmina_applet_menu_item_html_a0c122a469388d5000ce5af4ec29a561e"><div class="ttname"><a href="struct___remmina_applet_menu_item.html#a0c122a469388d5000ce5af4ec29a561e">_RemminaAppletMenuItem::protocol</a></div><div class="ttdeci">gchar * protocol</div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu__item_8h_source.html#l00060">remmina_applet_menu_item.h:60</a></div></div>
<div class="ttc" id="rcw_8c_html_a71284e0ce3acb9fce6d4ecf6fea1a3f5"><div class="ttname"><a href="rcw_8c.html#a71284e0ce3acb9fce6d4ecf6fea1a3f5">rcw_keyboard_grab_retry</a></div><div class="ttdeci">static gboolean rcw_keyboard_grab_retry(gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00484">rcw.c:484</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00955">remmina_pref.c:955</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00919">remmina_pref.c:919</a></div></div>
<div class="ttc" id="rcw_8c_html_a423aaf9a4d3eed6dac67de5a8cc24a18"><div class="ttname"><a href="rcw_8c.html#a423aaf9a4d3eed6dac67de5a8cc24a18">rcw_floating_toolbar_hide</a></div><div class="ttdeci">static gboolean rcw_floating_toolbar_hide(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02991">rcw.c:2991</a></div></div>
<div class="ttc" id="rcw_8c_html_a961e539a6f6ccbe73a301869c6960ab6"><div class="ttname"><a href="rcw_8c.html#a961e539a6f6ccbe73a301869c6960ab6">rcw_floating_toolbar_on_enter</a></div><div class="ttdeci">static gboolean rcw_floating_toolbar_on_enter(GtkWidget *widget, GdkEventCrossing *event, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02791">rcw.c:2791</a></div></div>
<div class="ttc" id="rcw_8c_html_a7e71031254421ccb10e0c29699cc9523"><div class="ttname"><a href="rcw_8c.html#a7e71031254421ccb10e0c29699cc9523">dnd_targets_tb</a></div><div class="ttdeci">static const GtkTargetEntry dnd_targets_tb[]</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00212">rcw.c:212</a></div></div>
@@ -213,7 +213,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a8cb8bd7679116f409b29399a5d14c527"><div class="ttname"><a href="rcw_8c.html#a8cb8bd7679116f409b29399a5d14c527">rco_get_desktop_size</a></div><div class="ttdeci">static void rco_get_desktop_size(RemminaConnectionObject *cnnobj, gint *width, gint *height)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00906">rcw.c:906</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="struct___remmina_plugin_screenshot_data_html_a9274a9d62e527ca25683af512505242e"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html#a9274a9d62e527ca25683af512505242e">_RemminaPluginScreenshotData::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00088">types.h:88</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
<div class="ttc" id="rcw_8c_html_affd8155adb04dc7ffbb7f4fff379dc47"><div class="ttname"><a href="rcw_8c.html#affd8155adb04dc7ffbb7f4fff379dc47">rcw_get_visible_cnnobj</a></div><div class="ttdeci">static RemminaConnectionObject * rcw_get_visible_cnnobj(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00377">rcw.c:377</a></div></div>
<div class="ttc" id="rcw_8c_html_ab01e6d10d9c1f5803dac15087b512346"><div class="ttname"><a href="rcw_8c.html#ab01e6d10d9c1f5803dac15087b512346">rcw_focus_in_event</a></div><div class="ttdeci">static gboolean rcw_focus_in_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03240">rcw.c:3240</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a6399c3828908e36ed6202b5599bd206b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a></div><div class="ttdeci">void remmina_protocol_widget_open_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00315">remmina_protocol_widget.c:315</a></div></div>
@@ -305,13 +305,13 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_ae6aeab2ffe3fe798cc017e02f8781358"><div class="ttname"><a href="rcw_8c.html#ae6aeab2ffe3fe798cc017e02f8781358">rcw_toolbar_menu</a></div><div class="ttdeci">static void rcw_toolbar_menu(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01978">rcw.c:1978</a></div></div>
<div class="ttc" id="rcw_8c_html_a2ea4e41deacf11e9b9b71e7eac06869e"><div class="ttname"><a href="rcw_8c.html#a2ea4e41deacf11e9b9b71e7eac06869e">rcw_signals</a></div><div class="ttdeci">static guint rcw_signals[LAST_SIGNAL]</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00185">rcw.c:185</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a14684e3222e6afb1b43d77634a174767"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a></div><div class="ttdeci">void remmina_protocol_widget_update_remote_resolution(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l02136">remmina_protocol_widget.c:2136</a></div></div>
-<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
+<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00464">remmina_protocol_widget.c:464</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a92025b5f6512955f9c29608b5451a12c"><div class="ttname"><a href="remmina__public_8c.html#a92025b5f6512955f9c29608b5451a12c">remmina_public_popup_position</a></div><div class="ttdeci">void remmina_public_popup_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00293">remmina_public.c:293</a></div></div>
<div class="ttc" id="struct___remmina_plugin_screenshot_data_html_acc352444c31929a1ef7aee2a0e37827d"><div class="ttname"><a href="struct___remmina_plugin_screenshot_data.html#acc352444c31929a1ef7aee2a0e37827d">_RemminaPluginScreenshotData::bitsPerPixel</a></div><div class="ttdeci">int bitsPerPixel</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00085">types.h:85</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00708">remmina_protocol_widget.c:708</a></div></div>
<div class="ttc" id="remmina__applet__menu_8c_html_a8029065504aef0e850d79f3823d18f66"><div class="ttname"><a href="remmina__applet__menu_8c.html#a8029065504aef0e850d79f3823d18f66">remmina_applet_menu_populate</a></div><div class="ttdeci">void remmina_applet_menu_populate(RemminaAppletMenu *menu)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu_8c_source.html#l00242">remmina_applet_menu.c:242</a></div></div>
-<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="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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="rcw_8c_html_aadf6b28ed1ba344b9c93bfb7077030d3"><div class="ttname"><a href="rcw_8c.html#aadf6b28ed1ba344b9c93bfb7077030d3">GTKSOCKET_NOT_AVAIL_RESPONSE_TYPE</a></div><div class="ttdeci">GTKSOCKET_NOT_AVAIL_RESPONSE_TYPE</div><div class="ttdoc">These define the response id&amp;#39;s of the gtksocket-is-not-available-warning-dialog buttons. </div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04457">rcw.c:4457</a></div></div>
<div class="ttc" id="rcw_8c_html_a82c93bbb1ab73807b366b86928c37946"><div class="ttname"><a href="rcw_8c.html#a82c93bbb1ab73807b366b86928c37946">rcw_kp_ungrab</a></div><div class="ttdeci">static void rcw_kp_ungrab(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00429">rcw.c:429</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00216">remmina_protocol_widget.c:216</a></div></div>
@@ -371,7 +371,7 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a327f62be43b7f312982f9e22b86a2867"><div class="ttname"><a href="rcw_8c.html#a327f62be43b7f312982f9e22b86a2867">rcw_update_notebook</a></div><div class="ttdeci">static void rcw_update_notebook(RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l03595">rcw.c:3595</a></div></div>
<div class="ttc" id="types_8h_html_a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1"><div class="ttname"><a href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a0658dd6adcfaf5cb52d6d99c97c352d1">REMMINA_PROTOCOL_FEATURE_TYPE_UNFOCUS</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00050">types.h:50</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__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="rcw_8c_html_a03311f33ff921f943f6edbbc1867d1ec"><div class="ttname"><a href="rcw_8c.html#a03311f33ff921f943f6edbbc1867d1ec">rcw_toolbar_switch_page_popdown</a></div><div class="ttdeci">void rcw_toolbar_switch_page_popdown(GtkWidget *widget, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l01571">rcw.c:1571</a></div></div>
<div class="ttc" id="rcw_8c_html_a544a61088b93ffc31a79554c70d97dff"><div class="ttname"><a href="rcw_8c.html#a544a61088b93ffc31a79554c70d97dff">rcw_floating_toolbar_make_invisible</a></div><div class="ttdeci">static gboolean rcw_floating_toolbar_make_invisible(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00869">rcw.c:869</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae2267a1de362addcee0c5801612dc5d6"><div class="ttname"><a href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">_RemminaPref::screenshot_name</a></div><div class="ttdeci">const gchar * screenshot_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00138">remmina_pref.h:138</a></div></div>
@@ -387,12 +387,12 @@ $(document).ready(function(){initNavTree('rcw_8c_source.html','');});
<div class="ttc" id="rcw_8c_html_a93650a12c555e40554b8b8e7382f42a3"><div class="ttname"><a href="rcw_8c.html#a93650a12c555e40554b8b8e7382f42a3">rcw_toolbar_screenshot</a></div><div class="ttdeci">static void rcw_toolbar_screenshot(GtkToolItem *toggle, RemminaConnectionWindow *cnnwin)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l02135">rcw.c:2135</a></div></div>
<div class="ttc" id="struct___remmina_connection_object_html_a871e61a40fb0acd54b10191a3942d328"><div class="ttname"><a href="struct___remmina_connection_object.html#a871e61a40fb0acd54b10191a3942d328">_RemminaConnectionObject::cnnwin</a></div><div class="ttdeci">RemminaConnectionWindow * cnnwin</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l00163">rcw.c:163</a></div></div>
<div class="ttc" id="remmina__message__panel_8c_html_ae01d27ae9f678dc5a4fa32f0b401f434"><div class="ttname"><a href="remmina__message__panel_8c.html#ae01d27ae9f678dc5a4fa32f0b401f434">remmina_message_panel_setup_message</a></div><div class="ttdeci">void remmina_message_panel_setup_message(RemminaMessagePanel *mp, const gchar *message, RemminaMessagePanelCallback response_callback, gpointer response_callback_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__message__panel_8c_source.html#l00174">remmina_message_panel.c:174</a></div></div>
-<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#l00086">remmina.c:86</a></div></div>
+<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#l00085">remmina.c:85</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__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="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#l02918">rcw.c:2918</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#l01633">rcw.c:1633</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#l00090">remmina.c:90</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#l00088">remmina.c:88</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#l03565">rcw.c:3565</a></div></div>
diff --git a/public/remmina_8c.html b/public/remmina_8c.html
index 23a49de63..5f2ed2b85 100644
--- a/public/remmina_8c.html
+++ b/public/remmina_8c.html
@@ -113,8 +113,6 @@ Variables</h2></td></tr>
<tr class="separator:a87cf5ad579b1e914ce7ea788cead4104"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4a9a67c5372ff07b71d0558679ab7ae"><td class="memItemLeft" align="right" valign="top">gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a></td></tr>
<tr class="separator:ab4a9a67c5372ff07b71d0558679ab7ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0e2a887037f1ac58aa26fae55187601a"><td class="memItemLeft" align="right" valign="top">gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">disablenews</a></td></tr>
-<tr class="separator:a0e2a887037f1ac58aa26fae55187601a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86d25bcf3c47f758f813a175a18b6ff1"><td class="memItemLeft" align="right" valign="top">gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></td></tr>
<tr class="separator:a86d25bcf3c47f758f813a175a18b6ff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0e3cdfa06abe7e29f987421869713e1"><td class="memItemLeft" align="right" valign="top">gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></td></tr>
@@ -151,7 +149,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00142">142</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00139">139</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -181,7 +179,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00354">354</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00345">345</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -220,7 +218,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<dl class="section warning"><dt>Warning</dt><dd>To be used like -c FILE -c FILE -c FILE …</dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00152">152</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00149">149</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -264,7 +262,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00315">315</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00306">306</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -292,27 +290,11 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00279">279</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00272">272</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
-<a id="a0e2a887037f1ac58aa26fae55187601a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0e2a887037f1ac58aa26fae55187601a">&#9670;&nbsp;</a></span>disablenews</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">gboolean disablenews</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00087">87</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
-
-</div>
-</div>
<a id="a86d25bcf3c47f758f813a175a18b6ff1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86d25bcf3c47f758f813a175a18b6ff1">&#9670;&nbsp;</a></span>disabletoolbar</h2>
@@ -325,7 +307,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00088">88</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00086">86</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -341,7 +323,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00091">91</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00089">89</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -357,7 +339,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00090">90</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00088">88</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -373,7 +355,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00089">89</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00087">87</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -389,7 +371,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00076">76</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00075">75</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -413,7 +395,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00082">82</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00081">81</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -429,7 +411,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00086">86</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00085">85</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -453,7 +435,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00093">93</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00091">91</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
diff --git a/public/remmina_8c.js b/public/remmina_8c.js
index ea9a18a49..89688d4f2 100644
--- a/public/remmina_8c.js
+++ b/public/remmina_8c.js
@@ -5,7 +5,6 @@ var remmina_8c =
[ "remmina_on_command_line", "remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914", null ],
[ "remmina_on_local_cmdline", "remmina_8c.html#a9e8319f901232eb5fada98335217979c", null ],
[ "remmina_on_startup", "remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a", null ],
- [ "disablenews", "remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a", null ],
[ "disabletoolbar", "remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1", null ],
[ "disabletrayicon", "remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58", null ],
[ "extrahardening", "remmina_8c.html#ae729d4262682c8674b8dd0135014810a", null ],
diff --git a/public/remmina_8c_source.html b/public/remmina_8c_source.html
index 1269d332f..e87a667d6 100644
--- a/public/remmina_8c_source.html
+++ b/public/remmina_8c_source.html
@@ -86,13 +86,13 @@ $(document).ready(function(){initNavTree('remmina_8c_source.html','');});
<div class="title">remmina.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina_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) 2014-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="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define G_LOG_USE_STRUCTURED</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#ifndef G_LOG_DOMAIN</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#define G_LOG_DOMAIN ((gchar*)&quot;remmina&quot;)</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* G_LOG_DOMAIN */</span><span class="preprocessor"></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></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;<span class="preprocessor">#include &quot;config.h&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__sodium_8h.html">remmina_sodium.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_8h.html">remmina.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="remmina__exec_8h.html">remmina_exec.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__file__manager_8h.html">remmina_file_manager.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__icon_8h.html">remmina_icon.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__main_8h.html">remmina_main.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__masterthread__exec_8h.html">remmina_masterthread_exec.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__plugin__native_8h.html">remmina_plugin_native.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef WITH_PYTHONLIBS</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;remmina_plugin_python.h&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif</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__pref_8h.html">remmina_pref.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__public_8h.html">remmina_public.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__sftp__plugin_8h.html">remmina_sftp_plugin.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__ssh__plugin_8h.html">remmina_ssh_plugin.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__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rmnews_8h.html">rmnews.h</a>&quot;</span></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="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#include &lt;gcrypt.h&gt;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3d760300165528383af409d2964d79d2"> 76</a></span>&#160;<a class="code" href="remmina_8c.html#a3d760300165528383af409d2964d79d2">GCRY_THREAD_OPTION_PTHREAD_IMPL</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBGCRYPT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104"> 82</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a> = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBGCRYPT */</span><span class="preprocessor"></span></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"><a class="line" href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1"> 86</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b"> 87</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">disablenews</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1"> 88</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1"> 89</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a"> 90</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58"> 91</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</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_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5"> 93</a></span>&#160;<span class="keyword">static</span> GOptionEntry <a class="code" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</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; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; { <span class="stringliteral">&quot;about&quot;</span>, <span class="charliteral">&#39;a&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show \&#39;About\&#39;&quot;</span>), NULL },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; { <span class="stringliteral">&quot;connect&quot;</span>, <span class="charliteral">&#39;c&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Connect either to a desktop described in a file (.remmina or a filetype supported by a plugin) or a supported URI (RDP, VNC, SSH or SPICE)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { G_OPTION_REMAINING, <span class="charliteral">&#39;\0&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Connect to a desktop described in a file (.remmina or a filetype supported by a plugin)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; { <span class="stringliteral">&quot;edit&quot;</span>, <span class="charliteral">&#39;e&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Edit desktop connection described in file (.remmina or a filetype supported by plugin)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; { <span class="stringliteral">&quot;help&quot;</span>, <span class="charliteral">&#39;?&#39;</span>, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, NULL, NULL, NULL },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; { <span class="stringliteral">&quot;kiosk&quot;</span>, <span class="charliteral">&#39;k&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Start in kiosk mode&quot;</span>), NULL },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; { <span class="stringliteral">&quot;new&quot;</span>, <span class="charliteral">&#39;n&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Create new connection profile&quot;</span>), NULL },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; { <span class="stringliteral">&quot;pref&quot;</span>, <span class="charliteral">&#39;p&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show preferences&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;TABINDEX&quot;</span>) },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">/* This option was used mainly for telepathy, let&#39;s keep it if we will need it in the future */</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">//{ &quot;plugin&quot;, &#39;x&#39;, 0, G_OPTION_ARG_STRING, NULL, N_(&quot;Run a plugin&quot;), N_(&quot;PLUGIN&quot;) },</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; { <span class="stringliteral">&quot;quit&quot;</span>, <span class="charliteral">&#39;q&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Quit&quot;</span>), NULL },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; { <span class="stringliteral">&quot;server&quot;</span>, <span class="charliteral">&#39;s&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use default server name (for --new)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SERVER&quot;</span>) },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; { <span class="stringliteral">&quot;protocol&quot;</span>, <span class="charliteral">&#39;t&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use default protocol (for --new)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;PROTOCOL&quot;</span>) },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; { <span class="stringliteral">&quot;icon&quot;</span>, <span class="charliteral">&#39;i&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Start in tray&quot;</span>), NULL },</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; { <span class="stringliteral">&quot;version&quot;</span>, <span class="charliteral">&#39;v&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show the application version&quot;</span>), NULL },</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; { <span class="stringliteral">&quot;full-version&quot;</span>, <span class="charliteral">&#39;V&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show version of the application and its plugins&quot;</span>), NULL },</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; { <span class="stringliteral">&quot;update-profile&quot;</span>, 0, 0, G_OPTION_ARG_FILENAME, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Modify connection profile (requires --set-option)&quot;</span>), NULL },</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; { <span class="stringliteral">&quot;set-option&quot;</span>, 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Set one or more profile settings, to be used with --update-profile&quot;</span>), NULL },</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; { <span class="stringliteral">&quot;encrypt-password&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Encrypt a password&quot;</span>), NULL },</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; { <span class="stringliteral">&quot;disable-news&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable news notification&quot;</span>), NULL },</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; { <span class="stringliteral">&quot;disable-toolbar&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable toolbar&quot;</span>), NULL },</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; { <span class="stringliteral">&quot;enable-fullscreen&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable fullscreen&quot;</span>), NULL },</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; { <span class="stringliteral">&quot;enable-extra-hardening&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable extra hardening (disable closing confirmation, disable unsafe shortcut keys, hide tabs, hide search bar)&quot;</span>), NULL },</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; { <span class="stringliteral">&quot;no-tray-icon&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable tray icon&quot;</span>), NULL },</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; { 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;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#ifdef WITH_LIBGCRYPT</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c"> 142</a></span>&#160;<a class="code" href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c">_gpg_error_to_errno</a>(gcry_error_t e)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">/* be lazy right now */</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (e == GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> EINVAL;</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;<span class="preprocessor">#endif </span><span class="comment">/* !WITH_LIBGCRYPT */</span><span class="preprocessor"></span></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"><a class="line" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914"> 152</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a>(GApplication *app, GApplicationCommandLine *cmdline)</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; TRACE_CALL(__func__);</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; gint status = 0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gboolean executed = FALSE;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; GVariantDict *opts;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; gchar *str;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> gchar **files;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> gchar **remaining_args;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; gchar *protocol;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; gchar *server;</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;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="remmina__sodium_8c.html#a17d17beeb57808af1c4299e3b4b94e9a">remmina_sodium_init</a>();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; opts = g_application_command_line_get_options_dict(cmdline);</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> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;disable-news&quot;</span>, NULL)) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">disablenews</a> = TRUE;</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"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;disable-toolbar&quot;</span>, NULL)) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a> = TRUE;</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"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;enable-fullscreen&quot;</span>, NULL)) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a> = TRUE;</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"> 182</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;enable-extra-hardening&quot;</span>, NULL)) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a> = TRUE;</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;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;no-tray-icon&quot;</span>, NULL)) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a> = TRUE;</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"> 190</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</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> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;quit&quot;</span>, NULL)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a>, NULL);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; executed = TRUE;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; status = 1;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;about&quot;</span>, NULL)) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacce474bb2b63053b884cc9e639d4372b">REMMINA_COMMAND_ABOUT</a>, NULL);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; executed = TRUE;</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="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;connect&quot;</span>, <span class="stringliteral">&quot;^aay&quot;</span>, &amp;files)) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; g_debug (<span class="stringliteral">&quot;Connecting to: %s&quot;</span>, files[i]);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, files[i]);</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; executed = TRUE;</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;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, G_OPTION_REMAINING, <span class="stringliteral">&quot;^a&amp;ay&quot;</span>, &amp;remaining_args)) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, remaining_args[0]);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; g_free(remaining_args);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; executed = TRUE;</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"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;edit&quot;</span>, <span class="stringliteral">&quot;^aay&quot;</span>, &amp;files)) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; g_debug (<span class="stringliteral">&quot;Editing file: %s&quot;</span>, files[i]);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caddf76fb98da2a8a197974ac1237dfb65">REMMINA_COMMAND_EDIT</a>, files[i]);</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; <span class="comment">//remmina_exec_command(REMMINA_COMMAND_EDIT, str);</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//g_free(str);</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; executed = TRUE;</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"> 232</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;kiosk&quot;</span>, NULL)) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> = TRUE;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>, NULL);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; executed = TRUE;</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;new&quot;</span>, NULL)) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (!g_variant_dict_lookup(opts, <span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;protocol))</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; protocol = NULL;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;server&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;server))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; str = g_strdup_printf(<span class="stringliteral">&quot;%s,%s&quot;</span>, protocol, server);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; str = g_strdup(protocol);</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; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a>, str);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; g_free(str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; executed = TRUE;</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; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;pref&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;str)) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca822f35bcbc0737231ada0aa4ecfcd704">REMMINA_COMMAND_PREF</a>, str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; executed = TRUE;</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">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;plugin&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;str)) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cabb2bf3aea0dd6f02ba402ec12a6ccbad">REMMINA_COMMAND_PLUGIN</a>, str);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; executed = TRUE;</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;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;icon&quot;</span>, NULL)) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca45777bb1a8f6a617da7eca5f7181d224">REMMINA_COMMAND_NONE</a>, NULL);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; executed = TRUE;</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="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;encrypt-password&quot;</span>, NULL)) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab4e4dc22219fe0323279276222efb0b5">REMMINA_COMMAND_ENCRYPT_PASSWORD</a>, NULL);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; executed = TRUE;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; status = 1;</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;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (!executed)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>, NULL);</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; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</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"><a class="line" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a"> 279</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a>(GApplication *app)</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; TRACE_CALL(__func__);</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; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</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; <a class="code" href="remmina__widget__pool_8c.html#aadc178f8f991ba939827d235aae8ad09">remmina_widget_pool_init</a>();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="remmina__sftp__plugin_8c.html#a14a447ab8a10b109967d92c8d2db0ff9">remmina_sftp_plugin_register</a>();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin_register</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a>();</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; g_set_application_name(<span class="stringliteral">&quot;Remmina&quot;</span>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; gtk_window_set_default_icon_name(REMMINA_APP_ID);</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; <span class="comment">/* Setting the X11 program class (WM_CLASS) is necessary to group</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> * windows with .desktop file which has the same StartupWMClass */</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; gdk_set_program_class(REMMINA_APP_ID);</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; gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; REMMINA_RUNTIME_DATADIR G_DIR_SEPARATOR_S <span class="stringliteral">&quot;icons&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; g_application_hold(app);</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; <a class="code" href="rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a">rmnews_schedule</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">/* Check for secret plugin and service initialization and show console warnings if</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> * something is missing */</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</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="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (!secret_plugin)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; g_print(<span class="stringliteral">&quot;Warning: Remmina is running without a secret plugin. Passwords will be saved in a less secure way.\n&quot;</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</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="l00310"></a><span class="lineno"> 310</span>&#160; g_print(<span class="stringliteral">&quot;Warning: Remmina is running with a secrecy plugin, but it cannot connect to a secrecy service.\n&quot;</span>);</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; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8">REMMINA_COMMAND_AUTOSTART</a>, NULL);</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"><a class="line" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c"> 315</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a>(GApplication *app, GVariantDict *opts, gpointer user_data)</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; TRACE_CALL(__func__);</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; <span class="keywordtype">int</span> status = -1;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; gchar *str;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; gchar **settings;</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; <span class="comment">/* Here you handle any command line options that you want to be executed</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * in the local instance (the non-unique instance) */</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;version&quot;</span>, NULL)) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caa436b39160d5ab6b73f6758dc5c30c06">REMMINA_COMMAND_VERSION</a>, NULL);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; status = 0;</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;full-version&quot;</span>, NULL)) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885">REMMINA_COMMAND_FULL_VERSION</a>, NULL);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; status = 0;</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;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;update-profile&quot;</span>, <span class="stringliteral">&quot;^&amp;ay&quot;</span>, &amp;str)) { <span class="comment">/* ^&amp;ay no need to free */</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;set-option&quot;</span>, <span class="stringliteral">&quot;^a&amp;s&quot;</span>, &amp;settings)) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span> (settings != NULL) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; status = <a class="code" href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a>(str, settings);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; g_free(settings);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; status = 1;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; status = 1;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; g_print(<span class="stringliteral">&quot;Error: --update-profile requires --set-option\n&quot;</span>);</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;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="comment">/* Returning a non negative value here makes the application exit */</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> status;</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"><a class="line" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97"> 354</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</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"> 356</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; GtkApplication *app;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">const</span> gchar *app_id;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordtype">int</span> status;</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; g_unsetenv(<span class="stringliteral">&quot;GDK_CORE_DEVICE_EVENTS&quot;</span>);</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"> 363</span>&#160; <span class="comment">// Checking for environment variable &quot;G_MESSAGES_DEBUG&quot;</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// Give the less familiar with GLib a tip on where to get</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// more debugging info.</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span>(!getenv(<span class="stringliteral">&quot;G_MESSAGES_DEBUG&quot;</span>)) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">/* TRANSLATORS:</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> * This link should point to a resource explaining how to get Remmina</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"> * to log more verbose statements.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; g_message(_(<span class="stringliteral">&quot;Remmina does not log all output statements. &quot;</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="stringliteral">&quot;Turn on more verbose output by using &quot;</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="stringliteral">&quot;\&quot;G_MESSAGES_DEBUG=all\&quot; as an environment variable.\n&quot;</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="stringliteral">&quot;More info available on the Remmina wiki at:\n&quot;</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="stringliteral">&quot;https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging&quot;</span></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"> 377</span>&#160; }</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; <span class="comment">/* Enable wayland backend only after GTK 3.22.27 or the clipboard</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"> * will not work. See GTK bug 790031 */</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__public_8c.html#ad7c29f17323086e08ac56e1636fd41c3">remmina_gtk_check_version</a>(3, 22, 27))</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; gdk_set_allowed_backends(<span class="stringliteral">&quot;wayland,x11,broadway,quartz,mir&quot;</span>);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; gdk_set_allowed_backends(<span class="stringliteral">&quot;x11,broadway,quartz,mir&quot;</span>);</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; <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>();</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; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; textdomain(GETTEXT_PACKAGE);</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;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; gcry_error_t e;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a>) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span> ((e = gcry_control(GCRYCTL_SET_THREAD_CBS, &amp;gcry_threads_pthread)) != GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a>++;</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="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; gcry_check_version(NULL);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; gcry_control(GCRYCTL_DISABLE_SECMEM, 0);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !HAVE_LIBGCRYPT */</span><span class="preprocessor"></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; <span class="comment">/* Initialize some Remmina parts needed also on a local instance for correct handle-local-options */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="remmina__file__manager_8c.html#afa2b1889dced4289b0f7d7edffc82e72">remmina_file_manager_init</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a>();</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"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; app_id = g_application_id_is_valid(REMMINA_APP_ID) ? REMMINA_APP_ID : NULL;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; app = gtk_application_new(app_id, G_APPLICATION_HANDLES_COMMAND_LINE | G_APPLICATION_CAN_OVERRIDE_APP_ID);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor">#if !GTK_CHECK_VERSION(4, 0, 0) </span><span class="comment">/* This is not needed anymore starting from GTK 4 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; g_set_prgname(app_id);</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; g_application_add_main_option_entries(G_APPLICATION(app), <a class="code" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</a>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#if GLIB_CHECK_VERSION(2,56,0)</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; gchar *summary = g_strdup_printf (<span class="stringliteral">&quot;%s %s&quot;</span>, app_id, VERSION);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; g_application_set_option_context_summary (G_APPLICATION(app), summary);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; g_free(summary);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; g_application_set_option_context_parameter_string (G_APPLICATION(app), _(<span class="stringliteral">&quot;- or protocol://username:encryptedpassword@host:port&quot;</span>));</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; g_application_set_option_context_description (G_APPLICATION(app),</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; _(<span class="stringliteral">&quot;Examples:\n&quot;</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="stringliteral">&quot;To connect using an existing connection profile, use:\n&quot;</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="stringliteral">&quot;\tremmina -c FILE.remmina\n&quot;</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="stringliteral">&quot;To quick connect using a URI:\n&quot;</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://username@server\n&quot;</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://domain\\\\username@server\n&quot;</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://username@server\n&quot;</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://server?VncUsername=username\n&quot;</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="stringliteral">&quot;\tremmina -c ssh://user@server\n&quot;</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;\tremmina -c spice://server\n&quot;</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="stringliteral">&quot;To quick connect using a URI along with an encrypted password:\n&quot;</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://username:encrypted-password@server\n&quot;</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://username:encrypted-password@server\n&quot;</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://server?VncUsername=username\\&amp;VncPassword=encrypted-password\n&quot;</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="stringliteral">&quot;To encrypt a password for use with a URI:\n&quot;</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="stringliteral">&quot;\tremmina --encrypt-password\n&quot;</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="stringliteral">&quot;To update username and password and set a different resolution mode of a Remmina connection profile, use:\n&quot;</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="stringliteral">&quot;\techo \&quot;username\\napassword\&quot; | remmina --update-profile /PATH/TO/FOO.remmina --set-option username --set-option resolution_mode=2 --set-option password\n&quot;</span>));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor">#endif</span></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"> 457</span>&#160; g_signal_connect(app, <span class="stringliteral">&quot;startup&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a>), NULL);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; g_signal_connect(app, <span class="stringliteral">&quot;command-line&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a>), NULL);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; g_signal_connect(app, <span class="stringliteral">&quot;handle-local-options&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a>), NULL);</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; g_application_set_inactivity_timeout(G_APPLICATION(app), 10000);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; status = g_application_run(G_APPLICATION(app), argc, argv);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; g_object_unref(app);</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; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;}</div><div class="ttc" id="remmina__exec_8c_html_a4e202866339a104ffdbfa519cfbcdca9"><div class="ttname"><a href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a></div><div class="ttdeci">int remmina_exec_set_setting(gchar *profilefilename, gchar **settings)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00166">remmina_exec.c:166</a></div></div>
-<div class="ttc" id="remmina_8c_html_a3837fb7dd2ca88b6f7acaecc0d062ac5"><div class="ttname"><a href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</a></div><div class="ttdeci">static GOptionEntry remmina_options[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00093">remmina.c:93</a></div></div>
+<a href="remmina_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) 2014-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="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define G_LOG_USE_STRUCTURED</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#ifndef G_LOG_DOMAIN</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#define G_LOG_DOMAIN ((gchar*)&quot;remmina&quot;)</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* G_LOG_DOMAIN */</span><span class="preprocessor"></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></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;<span class="preprocessor">#include &quot;config.h&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__sodium_8h.html">remmina_sodium.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_8h.html">remmina.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="remmina__exec_8h.html">remmina_exec.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__file__manager_8h.html">remmina_file_manager.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__icon_8h.html">remmina_icon.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__main_8h.html">remmina_main.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__masterthread__exec_8h.html">remmina_masterthread_exec.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__plugin__native_8h.html">remmina_plugin_native.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef WITH_PYTHONLIBS</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &quot;remmina_plugin_python.h&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif</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__pref_8h.html">remmina_pref.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__public_8h.html">remmina_public.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__sftp__plugin_8h.html">remmina_sftp_plugin.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__ssh__plugin_8h.html">remmina_ssh_plugin.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__widget__pool_8h.html">remmina_widget_pool.h</a>&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</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="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">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#include &lt;gcrypt.h&gt;</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="remmina_8c.html#a3d760300165528383af409d2964d79d2"> 75</a></span>&#160;<a class="code" href="remmina_8c.html#a3d760300165528383af409d2964d79d2">GCRY_THREAD_OPTION_PTHREAD_IMPL</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBGCRYPT */</span><span class="preprocessor"></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="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104"> 81</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a> = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBGCRYPT */</span><span class="preprocessor"></span></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_8h.html#a806213b48f3332bbb4bb771ddde38ab1"> 85</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1"> 86</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1"> 87</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a"> 88</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58"> 89</a></span>&#160;gboolean <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</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"><a class="line" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5"> 91</a></span>&#160;<span class="keyword">static</span> GOptionEntry <a class="code" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</a>[] =</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; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; { <span class="stringliteral">&quot;about&quot;</span>, <span class="charliteral">&#39;a&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show \&#39;About\&#39;&quot;</span>), NULL },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; { <span class="stringliteral">&quot;connect&quot;</span>, <span class="charliteral">&#39;c&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Connect either to a desktop described in a file (.remmina or a filetype supported by a plugin) or a supported URI (RDP, VNC, SSH or SPICE)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; { G_OPTION_REMAINING, <span class="charliteral">&#39;\0&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Connect to a desktop described in a file (.remmina or a filetype supported by a plugin)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { <span class="stringliteral">&quot;edit&quot;</span>, <span class="charliteral">&#39;e&#39;</span>, 0, G_OPTION_ARG_FILENAME_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Edit desktop connection described in file (.remmina or a filetype supported by plugin)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;FILE&quot;</span>) },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; { <span class="stringliteral">&quot;help&quot;</span>, <span class="charliteral">&#39;?&#39;</span>, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, NULL, NULL, NULL },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; { <span class="stringliteral">&quot;kiosk&quot;</span>, <span class="charliteral">&#39;k&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Start in kiosk mode&quot;</span>), NULL },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; { <span class="stringliteral">&quot;new&quot;</span>, <span class="charliteral">&#39;n&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Create new connection profile&quot;</span>), NULL },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; { <span class="stringliteral">&quot;pref&quot;</span>, <span class="charliteral">&#39;p&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show preferences&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;TABINDEX&quot;</span>) },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="comment">/* This option was used mainly for telepathy, let&#39;s keep it if we will need it in the future */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">//{ &quot;plugin&quot;, &#39;x&#39;, 0, G_OPTION_ARG_STRING, NULL, N_(&quot;Run a plugin&quot;), N_(&quot;PLUGIN&quot;) },</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; { <span class="stringliteral">&quot;quit&quot;</span>, <span class="charliteral">&#39;q&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Quit&quot;</span>), NULL },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; { <span class="stringliteral">&quot;server&quot;</span>, <span class="charliteral">&#39;s&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use default server name (for --new)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SERVER&quot;</span>) },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; { <span class="stringliteral">&quot;protocol&quot;</span>, <span class="charliteral">&#39;t&#39;</span>, 0, G_OPTION_ARG_STRING, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use default protocol (for --new)&quot;</span>), <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;PROTOCOL&quot;</span>) },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; { <span class="stringliteral">&quot;icon&quot;</span>, <span class="charliteral">&#39;i&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Start in tray&quot;</span>), NULL },</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; { <span class="stringliteral">&quot;version&quot;</span>, <span class="charliteral">&#39;v&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show the application version&quot;</span>), NULL },</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; { <span class="stringliteral">&quot;full-version&quot;</span>, <span class="charliteral">&#39;V&#39;</span>, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Show version of the application and its plugins&quot;</span>), NULL },</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; { <span class="stringliteral">&quot;update-profile&quot;</span>, 0, 0, G_OPTION_ARG_FILENAME, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Modify connection profile (requires --set-option)&quot;</span>), NULL },</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; { <span class="stringliteral">&quot;set-option&quot;</span>, 0, 0, G_OPTION_ARG_STRING_ARRAY, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Set one or more profile settings, to be used with --update-profile&quot;</span>), NULL },</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; { <span class="stringliteral">&quot;encrypt-password&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Encrypt a password&quot;</span>), NULL },</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; { <span class="stringliteral">&quot;disable-toolbar&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable toolbar&quot;</span>), NULL },</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; { <span class="stringliteral">&quot;enable-fullscreen&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable fullscreen&quot;</span>), NULL },</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; { <span class="stringliteral">&quot;enable-extra-hardening&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable extra hardening (disable closing confirmation, disable unsafe shortcut keys, hide tabs, hide search bar)&quot;</span>), NULL },</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; { <span class="stringliteral">&quot;no-tray-icon&quot;</span>, 0, 0, G_OPTION_ARG_NONE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable tray icon&quot;</span>), NULL },</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; { NULL }</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;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor">#ifdef WITH_LIBGCRYPT</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c"> 139</a></span>&#160;<a class="code" href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c">_gpg_error_to_errno</a>(gcry_error_t e)</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"> 141</span>&#160; <span class="comment">/* be lazy right now */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (e == GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> 0;</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; <span class="keywordflow">return</span> EINVAL;</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="preprocessor">#endif </span><span class="comment">/* !WITH_LIBGCRYPT */</span><span class="preprocessor"></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"><a class="line" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914"> 149</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a>(GApplication *app, GApplicationCommandLine *cmdline)</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; TRACE_CALL(__func__);</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; gint status = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; gboolean executed = FALSE;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; GVariantDict *opts;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; gchar *str;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> gchar **files;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> gchar **remaining_args;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; gchar *protocol;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; gchar *server;</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;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="remmina__sodium_8c.html#a17d17beeb57808af1c4299e3b4b94e9a">remmina_sodium_init</a>();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; opts = g_application_command_line_get_options_dict(cmdline);</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;disable-toolbar&quot;</span>, NULL)) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a> = TRUE;</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;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;enable-fullscreen&quot;</span>, NULL)) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a> = TRUE;</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;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;enable-extra-hardening&quot;</span>, NULL)) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a> = TRUE;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;no-tray-icon&quot;</span>, NULL)) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a> = TRUE;</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"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>();</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;quit&quot;</span>, NULL)) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a>, NULL);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; executed = TRUE;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; status = 1;</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;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;about&quot;</span>, NULL)) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacce474bb2b63053b884cc9e639d4372b">REMMINA_COMMAND_ABOUT</a>, NULL);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; executed = TRUE;</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;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;connect&quot;</span>, <span class="stringliteral">&quot;^aay&quot;</span>, &amp;files)) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; g_debug (<span class="stringliteral">&quot;Connecting to: %s&quot;</span>, files[i]);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, files[i]);</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; executed = TRUE;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</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; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, G_OPTION_REMAINING, <span class="stringliteral">&quot;^a&amp;ay&quot;</span>, &amp;remaining_args)) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>, remaining_args[0]);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; g_free(remaining_args);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; executed = TRUE;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</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; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;edit&quot;</span>, <span class="stringliteral">&quot;^aay&quot;</span>, &amp;files)) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (files)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">for</span> (gint i = 0; files[i]; i++) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; g_debug (<span class="stringliteral">&quot;Editing file: %s&quot;</span>, files[i]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caddf76fb98da2a8a197974ac1237dfb65">REMMINA_COMMAND_EDIT</a>, files[i]);</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"> 220</span>&#160; <span class="comment">//remmina_exec_command(REMMINA_COMMAND_EDIT, str);</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="comment">//g_free(str);</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; executed = TRUE;</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;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;kiosk&quot;</span>, NULL)) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="remmina_8c.html#ab4a9a67c5372ff07b71d0558679ab7ae">kioskmode</a> = TRUE;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>, NULL);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; executed = TRUE;</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"> 231</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;new&quot;</span>, NULL)) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">if</span> (!g_variant_dict_lookup(opts, <span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;protocol))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; protocol = NULL;</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"> 235</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;server&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;server))</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; str = g_strdup_printf(<span class="stringliteral">&quot;%s,%s&quot;</span>, protocol, server);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; str = g_strdup(protocol);</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; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a>, str);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; g_free(str);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; executed = TRUE;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; }</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> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;pref&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;str)) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca822f35bcbc0737231ada0aa4ecfcd704">REMMINA_COMMAND_PREF</a>, str);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; executed = TRUE;</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> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;plugin&quot;</span>, <span class="stringliteral">&quot;&amp;s&quot;</span>, &amp;str)) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cabb2bf3aea0dd6f02ba402ec12a6ccbad">REMMINA_COMMAND_PLUGIN</a>, str);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; executed = TRUE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;icon&quot;</span>, NULL)) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca45777bb1a8f6a617da7eca5f7181d224">REMMINA_COMMAND_NONE</a>, NULL);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; executed = TRUE;</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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;encrypt-password&quot;</span>, NULL)) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab4e4dc22219fe0323279276222efb0b5">REMMINA_COMMAND_ENCRYPT_PASSWORD</a>, NULL);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; executed = TRUE;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; status = 1;</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"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (!executed)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>, NULL);</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"> 269</span>&#160; <span class="keywordflow">return</span> status;</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;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a"> 272</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a>(GApplication *app)</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; TRACE_CALL(__func__);</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; <a class="code" href="struct___remmina_secret_plugin.html">RemminaSecretPlugin</a> *secret_plugin;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#aadc178f8f991ba939827d235aae8ad09">remmina_widget_pool_init</a>();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="remmina__sftp__plugin_8c.html#a14a447ab8a10b109967d92c8d2db0ff9">remmina_sftp_plugin_register</a>();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin_register</a>();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a>();</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_set_application_name(<span class="stringliteral">&quot;Remmina&quot;</span>);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; gtk_window_set_default_icon_name(REMMINA_APP_ID);</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; <span class="comment">/* Setting the X11 program class (WM_CLASS) is necessary to group</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> * windows with .desktop file which has the same StartupWMClass */</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; gdk_set_program_class(REMMINA_APP_ID);</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; gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; REMMINA_RUNTIME_DATADIR G_DIR_SEPARATOR_S <span class="stringliteral">&quot;icons&quot;</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; g_application_hold(app);</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; <span class="comment">/* Check for secret plugin and service initialization and show console warnings if</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * something is missing */</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</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="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (!secret_plugin)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; g_print(<span class="stringliteral">&quot;Warning: Remmina is running without a secret plugin. Passwords will be saved in a less secure way.\n&quot;</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</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="l00301"></a><span class="lineno"> 301</span>&#160; g_print(<span class="stringliteral">&quot;Warning: Remmina is running with a secrecy plugin, but it cannot connect to a secrecy service.\n&quot;</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8">REMMINA_COMMAND_AUTOSTART</a>, NULL);</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;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c"> 306</a></span>&#160;<span class="keyword">static</span> gint <a class="code" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a>(GApplication *app, GVariantDict *opts, gpointer user_data)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">int</span> status = -1;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; gchar *str;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; gchar **settings;</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; <span class="comment">/* Here you handle any command line options that you want to be executed</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> * in the local instance (the non-unique instance) */</span></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; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;version&quot;</span>, NULL)) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caa436b39160d5ab6b73f6758dc5c30c06">REMMINA_COMMAND_VERSION</a>, NULL);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; status = 0;</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;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup_value(opts, <span class="stringliteral">&quot;full-version&quot;</span>, NULL)) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885">REMMINA_COMMAND_FULL_VERSION</a>, NULL);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; status = 0;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</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> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;update-profile&quot;</span>, <span class="stringliteral">&quot;^&amp;ay&quot;</span>, &amp;str)) { <span class="comment">/* ^&amp;ay no need to free */</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (g_variant_dict_lookup(opts, <span class="stringliteral">&quot;set-option&quot;</span>, <span class="stringliteral">&quot;^a&amp;s&quot;</span>, &amp;settings)) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (settings != NULL) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; status = <a class="code" href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a>(str, settings);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; g_free(settings);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; status = 1;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; status = 1;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; g_print(<span class="stringliteral">&quot;Error: --update-profile requires --set-option\n&quot;</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"> 341</span>&#160; <span class="comment">/* Returning a non negative value here makes the application exit */</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> status;</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"><a class="line" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97"> 345</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; GtkApplication *app;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">const</span> gchar *app_id;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">int</span> status;</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; g_unsetenv(<span class="stringliteral">&quot;GDK_CORE_DEVICE_EVENTS&quot;</span>);</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; <span class="comment">// Checking for environment variable &quot;G_MESSAGES_DEBUG&quot;</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="comment">// Give the less familiar with GLib a tip on where to get</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// more debugging info.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">if</span>(!getenv(<span class="stringliteral">&quot;G_MESSAGES_DEBUG&quot;</span>)) {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">/* TRANSLATORS:</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * This link should point to a resource explaining how to get Remmina</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * to log more verbose statements.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; g_message(_(<span class="stringliteral">&quot;Remmina does not log all output statements. &quot;</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="stringliteral">&quot;Turn on more verbose output by using &quot;</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="stringliteral">&quot;\&quot;G_MESSAGES_DEBUG=all\&quot; as an environment variable.\n&quot;</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="stringliteral">&quot;More info available on the Remmina wiki at:\n&quot;</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="stringliteral">&quot;https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging&quot;</span></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; }</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; <span class="comment">/* Enable wayland backend only after GTK 3.22.27 or the clipboard</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> * will not work. See GTK bug 790031 */</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__public_8c.html#ad7c29f17323086e08ac56e1636fd41c3">remmina_gtk_check_version</a>(3, 22, 27))</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; gdk_set_allowed_backends(<span class="stringliteral">&quot;wayland,x11,broadway,quartz,mir&quot;</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; gdk_set_allowed_backends(<span class="stringliteral">&quot;x11,broadway,quartz,mir&quot;</span>);</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"> 377</span>&#160; <a class="code" href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a>();</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; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; textdomain(GETTEXT_PACKAGE);</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;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"># if GCRYPT_VERSION_NUMBER &lt; 0x010600</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gcry_error_t e;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a>) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> ((e = gcry_control(GCRYCTL_SET_THREAD_CBS, &amp;gcry_threads_pthread)) != GPG_ERR_NO_ERROR)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <a class="code" href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a>++;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !GCRYPT_VERSION_NUMBER */</span><span class="preprocessor"></span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; gcry_check_version(NULL);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; gcry_control(GCRYCTL_DISABLE_SECMEM, 0);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* !HAVE_LIBGCRYPT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">/* Initialize some Remmina parts needed also on a local instance for correct handle-local-options */</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="remmina__file__manager_8c.html#afa2b1889dced4289b0f7d7edffc82e72">remmina_file_manager_init</a>();</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; <a class="code" href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a>();</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"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; app_id = g_application_id_is_valid(REMMINA_APP_ID) ? REMMINA_APP_ID : NULL;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; app = gtk_application_new(app_id, G_APPLICATION_HANDLES_COMMAND_LINE | G_APPLICATION_CAN_OVERRIDE_APP_ID);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#if !GTK_CHECK_VERSION(4, 0, 0) </span><span class="comment">/* This is not needed anymore starting from GTK 4 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; g_set_prgname(app_id);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; g_application_add_main_option_entries(G_APPLICATION(app), <a class="code" href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</a>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor">#if GLIB_CHECK_VERSION(2,56,0)</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; gchar *summary = g_strdup_printf (<span class="stringliteral">&quot;%s %s&quot;</span>, app_id, VERSION);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; g_application_set_option_context_summary (G_APPLICATION(app), summary);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; g_free(summary);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; g_application_set_option_context_parameter_string (G_APPLICATION(app), _(<span class="stringliteral">&quot;- or protocol://username:encryptedpassword@host:port&quot;</span>));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// TRANSLATORS: Shown in terminal. Do not use characters that may be not supported on a terminal</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; g_application_set_option_context_description (G_APPLICATION(app),</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; _(<span class="stringliteral">&quot;Examples:\n&quot;</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="stringliteral">&quot;To connect using an existing connection profile, use:\n&quot;</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="stringliteral">&quot;\tremmina -c FILE.remmina\n&quot;</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="stringliteral">&quot;To quick connect using a URI:\n&quot;</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://username@server\n&quot;</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://domain\\\\username@server\n&quot;</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://username@server\n&quot;</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://server?VncUsername=username\n&quot;</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="stringliteral">&quot;\tremmina -c ssh://user@server\n&quot;</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="stringliteral">&quot;\tremmina -c spice://server\n&quot;</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="stringliteral">&quot;To quick connect using a URI along with an encrypted password:\n&quot;</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="stringliteral">&quot;\tremmina -c rdp://username:encrypted-password@server\n&quot;</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://username:encrypted-password@server\n&quot;</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="stringliteral">&quot;\tremmina -c vnc://server?VncUsername=username\\&amp;VncPassword=encrypted-password\n&quot;</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="stringliteral">&quot;To encrypt a password for use with a URI:\n&quot;</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="stringliteral">&quot;\tremmina --encrypt-password\n&quot;</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="stringliteral">&quot;To update username and password and set a different resolution mode of a Remmina connection profile, use:\n&quot;</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="stringliteral">&quot;\techo \&quot;username\\napassword\&quot; | remmina --update-profile /PATH/TO/FOO.remmina --set-option username --set-option resolution_mode=2 --set-option password\n&quot;</span>));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="preprocessor">#endif</span></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_signal_connect(app, <span class="stringliteral">&quot;startup&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a>), NULL);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; g_signal_connect(app, <span class="stringliteral">&quot;command-line&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a>), NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; g_signal_connect(app, <span class="stringliteral">&quot;handle-local-options&quot;</span>, G_CALLBACK(<a class="code" href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a>), 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;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; g_application_set_inactivity_timeout(G_APPLICATION(app), 10000);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; status = g_application_run(G_APPLICATION(app), argc, argv);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; g_object_unref(app);</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"> 457</span>&#160; <span class="keywordflow">return</span> status;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;}</div><div class="ttc" id="remmina__exec_8c_html_a4e202866339a104ffdbfa519cfbcdca9"><div class="ttname"><a href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a></div><div class="ttdeci">int remmina_exec_set_setting(gchar *profilefilename, gchar **settings)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00166">remmina_exec.c:166</a></div></div>
+<div class="ttc" id="remmina_8c_html_a3837fb7dd2ca88b6f7acaecc0d062ac5"><div class="ttname"><a href="remmina_8c.html#a3837fb7dd2ca88b6f7acaecc0d062ac5">remmina_options</a></div><div class="ttdeci">static GOptionEntry remmina_options[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00091">remmina.c:91</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__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885">REMMINA_COMMAND_FULL_VERSION</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00051">remmina_exec.h: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>
-<div class="ttc" id="remmina_8c_html_a26d2c20be18ff44f239b756f1d5be01a"><div class="ttname"><a href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a></div><div class="ttdeci">static void remmina_on_startup(GApplication *app)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00279">remmina.c:279</a></div></div>
+<div class="ttc" id="remmina_8c_html_a26d2c20be18ff44f239b756f1d5be01a"><div class="ttname"><a href="remmina_8c.html#a26d2c20be18ff44f239b756f1d5be01a">remmina_on_startup</a></div><div class="ttdeci">static void remmina_on_startup(GApplication *app)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00272">remmina.c:272</a></div></div>
<div class="ttc" id="remmina_8h_html"><div class="ttname"><a href="remmina_8h.html">remmina.h</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="remmina__trace__calls_8h_html"><div class="ttname"><a href="remmina__trace__calls_8h.html">remmina_trace_calls.h</a></div></div>
@@ -102,11 +102,11 @@ $(document).ready(function(){initNavTree('remmina_8c_source.html','');});
<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="remmina__masterthread__exec_8c_html_a4a595ce198f8adda31fe11348b0f734e"><div class="ttname"><a href="remmina__masterthread__exec_8c.html#a4a595ce198f8adda31fe11348b0f734e">remmina_masterthread_exec_save_main_thread_id</a></div><div class="ttdeci">void remmina_masterthread_exec_save_main_thread_id()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__masterthread__exec_8c_source.html#l00141">remmina_masterthread_exec.c:141</a></div></div>
<div class="ttc" id="remmina__sftp__plugin_8c_html_a14a447ab8a10b109967d92c8d2db0ff9"><div class="ttname"><a href="remmina__sftp__plugin_8c.html#a14a447ab8a10b109967d92c8d2db0ff9">remmina_sftp_plugin_register</a></div><div class="ttdeci">void remmina_sftp_plugin_register(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sftp__plugin_8c_source.html#l00387">remmina_sftp_plugin.c:387</a></div></div>
-<div class="ttc" id="remmina_8c_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00354">remmina.c:354</a></div></div>
-<div class="ttc" id="remmina_8c_html_a1ecec6e37469e2e927a612747269587c"><div class="ttname"><a href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c">_gpg_error_to_errno</a></div><div class="ttdeci">static int _gpg_error_to_errno(gcry_error_t e)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00142">remmina.c:142</a></div></div>
+<div class="ttc" id="remmina_8c_html_a0ddf1224851353fc92bfbff6f499fa97"><div class="ttname"><a href="remmina_8c.html#a0ddf1224851353fc92bfbff6f499fa97">main</a></div><div class="ttdeci">int main(int argc, char *argv[])</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00345">remmina.c:345</a></div></div>
+<div class="ttc" id="remmina_8c_html_a1ecec6e37469e2e927a612747269587c"><div class="ttname"><a href="remmina_8c.html#a1ecec6e37469e2e927a612747269587c">_gpg_error_to_errno</a></div><div class="ttdeci">static int _gpg_error_to_errno(gcry_error_t e)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00139">remmina.c:139</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__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0caddf76fb98da2a8a197974ac1237dfb65"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caddf76fb98da2a8a197974ac1237dfb65">REMMINA_COMMAND_EDIT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00048">remmina_exec.h:48</a></div></div>
-<div class="ttc" id="remmina_8c_html_aeb286fc5bd52ab5382ab8cb495dc2914"><div class="ttname"><a href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a></div><div class="ttdeci">static gint remmina_on_command_line(GApplication *app, GApplicationCommandLine *cmdline)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00152">remmina.c:152</a></div></div>
+<div class="ttc" id="remmina_8c_html_aeb286fc5bd52ab5382ab8cb495dc2914"><div class="ttname"><a href="remmina_8c.html#aeb286fc5bd52ab5382ab8cb495dc2914">remmina_on_command_line</a></div><div class="ttdeci">static gint remmina_on_command_line(GApplication *app, GApplicationCommandLine *cmdline)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00149">remmina.c:149</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__manager_8c_html_afa2b1889dced4289b0f7d7edffc82e72"><div class="ttname"><a href="remmina__file__manager_8c.html#afa2b1889dced4289b0f7d7edffc82e72">remmina_file_manager_init</a></div><div class="ttdeci">void remmina_file_manager_init(void)</div><div class="ttdoc">It creates the Remmina data and cache folders. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00116">remmina_file_manager.c:116</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8c_html_a6f594d157e09639e09b1f32a420da96c"><div class="ttname"><a href="remmina__ssh__plugin_8c.html#a6f594d157e09639e09b1f32a420da96c">remmina_ssh_plugin_register</a></div><div class="ttdeci">void remmina_ssh_plugin_register(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh__plugin_8c_source.html#l01695">remmina_ssh_plugin.c:1695</a></div></div>
@@ -114,32 +114,29 @@ $(document).ready(function(){initNavTree('remmina_8c_source.html','');});
<div class="ttc" id="remmina__icon_8h_html"><div class="ttname"><a href="remmina__icon_8h.html">remmina_icon.h</a></div></div>
<div class="ttc" id="remmina__icon_8c_html_afbd7758d1d43c61a014b7ef00f11fa58"><div class="ttname"><a href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a></div><div class="ttdeci">void remmina_icon_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00345">remmina_icon.c:345</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
-<div class="ttc" id="remmina_8c_html_a9e8319f901232eb5fada98335217979c"><div class="ttname"><a href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a></div><div class="ttdeci">static gint remmina_on_local_cmdline(GApplication *app, GVariantDict *opts, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00315">remmina.c:315</a></div></div>
-<div class="ttc" id="remmina_8c_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00088">remmina.c:88</a></div></div>
-<div class="ttc" id="remmina_8c_html_a87cf5ad579b1e914ce7ea788cead4104"><div class="ttname"><a href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a></div><div class="ttdeci">static int gcrypt_thread_initialized</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_8c_html_a9e8319f901232eb5fada98335217979c"><div class="ttname"><a href="remmina_8c.html#a9e8319f901232eb5fada98335217979c">remmina_on_local_cmdline</a></div><div class="ttdeci">static gint remmina_on_local_cmdline(GApplication *app, GVariantDict *opts, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00306">remmina.c:306</a></div></div>
+<div class="ttc" id="remmina_8c_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</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_8c_html_a87cf5ad579b1e914ce7ea788cead4104"><div class="ttname"><a href="remmina_8c.html#a87cf5ad579b1e914ce7ea788cead4104">gcrypt_thread_initialized</a></div><div class="ttdeci">static int gcrypt_thread_initialized</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00081">remmina.c:81</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>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cacce474bb2b63053b884cc9e639d4372b"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacce474bb2b63053b884cc9e639d4372b">REMMINA_COMMAND_ABOUT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00049">remmina_exec.h:49</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00046">remmina_exec.h:46</a></div></div>
-<div class="ttc" id="rmnews_8h_html"><div class="ttname"><a href="rmnews_8h.html">rmnews.h</a></div></div>
-<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
+<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a9df07091ff7d32bcde595a6d3a3598f5"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a9df07091ff7d32bcde595a6d3a3598f5">remmina_plugin_manager_init</a></div><div class="ttdeci">void remmina_plugin_manager_init()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00333">remmina_plugin_manager.c:333</a></div></div>
<div class="ttc" id="remmina__widget__pool_8c_html_aadc178f8f991ba939827d235aae8ad09"><div class="ttname"><a href="remmina__widget__pool_8c.html#aadc178f8f991ba939827d235aae8ad09">remmina_widget_pool_init</a></div><div class="ttdeci">void remmina_widget_pool_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00044">remmina_widget_pool.c:44</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8">REMMINA_COMMAND_AUTOSTART</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00054">remmina_exec.h:54</a></div></div>
<div class="ttc" id="remmina__public_8c_html_ad7c29f17323086e08ac56e1636fd41c3"><div class="ttname"><a href="remmina__public_8c.html#ad7c29f17323086e08ac56e1636fd41c3">remmina_gtk_check_version</a></div><div class="ttdeci">gboolean remmina_gtk_check_version(guint major, guint minor, guint micro)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00712">remmina_public.c:712</a></div></div>
-<div class="ttc" id="rmnews_8c_html_a8433da15acb3138804b4816189e8fc3a"><div class="ttname"><a href="rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a">rmnews_schedule</a></div><div class="ttdeci">void rmnews_schedule()</div><div class="ttdef"><b>Definition:</b> <a href="rmnews_8c_source.html#l00664">rmnews.c:664</a></div></div>
-<div class="ttc" id="remmina_8c_html_a0e2a887037f1ac58aa26fae55187601a"><div class="ttname"><a href="remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a">disablenews</a></div><div class="ttdeci">gboolean disablenews</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</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_8c_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00091">remmina.c:91</a></div></div>
+<div class="ttc" id="remmina_8c_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a400f7319fd3996a13399ef72bcf0a2fd"><div class="ttname"><a href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a></div><div class="ttdeci">void remmina_pref_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00219">remmina_pref.c:219</a></div></div>
<div class="ttc" id="remmina__ssh__plugin_8h_html"><div class="ttname"><a href="remmina__ssh__plugin_8h.html">remmina_ssh_plugin.h</a></div></div>
-<div class="ttc" id="remmina_8c_html_a3d760300165528383af409d2964d79d2"><div class="ttname"><a href="remmina_8c.html#a3d760300165528383af409d2964d79d2">GCRY_THREAD_OPTION_PTHREAD_IMPL</a></div><div class="ttdeci">GCRY_THREAD_OPTION_PTHREAD_IMPL</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00076">remmina.c:76</a></div></div>
+<div class="ttc" id="remmina_8c_html_a3d760300165528383af409d2964d79d2"><div class="ttname"><a href="remmina_8c.html#a3d760300165528383af409d2964d79d2">GCRY_THREAD_OPTION_PTHREAD_IMPL</a></div><div class="ttdeci">GCRY_THREAD_OPTION_PTHREAD_IMPL</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00075">remmina.c:75</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>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00053">remmina_exec.h:53</a></div></div>
<div class="ttc" id="remmina__plugin__native_8h_html"><div class="ttname"><a href="remmina__plugin__native_8h.html">remmina_plugin_native.h</a></div></div>
-<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#l00086">remmina.c:86</a></div></div>
+<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#l00085">remmina.c:85</a></div></div>
<div class="ttc" id="remmina__sftp__plugin_8h_html"><div class="ttname"><a href="remmina__sftp__plugin_8h.html">remmina_sftp_plugin.h</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#l00090">remmina.c:90</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#l00088">remmina.c:88</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00047">remmina_exec.h:47</a></div></div>
<div class="ttc" id="remmina__exec_8h_html"><div class="ttname"><a href="remmina__exec_8h.html">remmina_exec.h</a></div></div>
<div class="ttc" id="vnc__plugin_8c_html_ab96ef9227ecef94018f2729f72e7651e"><div class="ttname"><a href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a></div><div class="ttdeci">N_(&quot;Unable to connect to VNC server&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="vnc__plugin_8c_source.html#l00951">vnc_plugin.c:951</a></div></div>
diff --git a/public/remmina_8h.html b/public/remmina_8h.html
index e2a8a4acf..ce8f9435d 100644
--- a/public/remmina_8h.html
+++ b/public/remmina_8h.html
@@ -109,7 +109,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00086">86</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00085">85</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
diff --git a/public/remmina_8h_source.html b/public/remmina_8h_source.html
index 9cb593d7b..73db44c2f 100644
--- a/public/remmina_8h_source.html
+++ b/public/remmina_8h_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina_8h_source.html','');});
<div class="title">remmina.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina_8h.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) 2014-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="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#pragma once</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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1">kioskmode</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina_8h_html_a806213b48f3332bbb4bb771ddde38ab1"><div class="ttname"><a href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1">kioskmode</a></div><div class="ttdeci">G_BEGIN_DECLS gboolean kioskmode</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00086">remmina.c:86</a></div></div>
+<a href="remmina_8h.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) 2014-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="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#pragma once</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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1">kioskmode</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina_8h_html_a806213b48f3332bbb4bb771ddde38ab1"><div class="ttname"><a href="remmina_8h.html#a806213b48f3332bbb4bb771ddde38ab1">kioskmode</a></div><div class="ttdeci">G_BEGIN_DECLS gboolean kioskmode</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00085">remmina.c:85</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/remmina__exec_8c_source.html b/public/remmina__exec_8c_source.html
index 48f5bd9ac..acccc618b 100644
--- a/public/remmina__exec_8c_source.html
+++ b/public/remmina__exec_8c_source.html
@@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<a href="remmina__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) 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;<span class="preprocessor">#include &quot;buildflags.h&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</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_8h.html">remmina.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__main_8h.html">remmina_main.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__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__pref_8h.html">remmina_pref.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__widget__pool_8h.html">remmina_widget_pool.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__unlock_8h.html">remmina_unlock.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__pref__dialog_8h.html">remmina_pref_dialog.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__plugin__manager_8h.html">remmina_plugin_manager.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__exec_8h.html">remmina_exec.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__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__file__manager_8h.html">remmina_file_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__crypt_8h.html">remmina_crypt.h</a>&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="preprocessor">#include &quot;<a class="code" href="remmina__icon_8h.html">remmina_icon.h</a>&quot;</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;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"># define ISSNAP &quot;- SNAP Build -&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"># define ISSNAP &quot;-&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</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"><a class="line" href="remmina__exec_8c.html#a0ffd51ed283da4640c920e75e89e694a"> 67</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__exec_8c.html#a0ffd51ed283da4640c920e75e89e694a">cb_closewidget</a>(GtkWidget *widget, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">/* The correct way to close a rcw is to send</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * it a &quot;delete-event&quot; signal. Simply destroying it will not close</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * all network connections */</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (REMMINA_IS_CONNECTION_WINDOW(widget))</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#adae469553aa0647d0df5d88b180e7cd7">rcw_delete</a>(RCW(widget));</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> TRUE;</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"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#a93f5633a6348dc1df1a5723b3054a2a3"> 78</a></span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__exec_8c.html#a93f5633a6348dc1df1a5723b3054a2a3">remmina_exec_get_build_config</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> gchar build_config[] =</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="stringliteral">&quot;Build configuration: &quot;</span> BUILD_CONFIG <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="stringliteral">&quot;Build type: &quot;</span> BUILD_TYPE <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="stringliteral">&quot;CFLAGS: &quot;</span> CFLAGS <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="stringliteral">&quot;Compiler: &quot;</span> COMPILER_ID <span class="stringliteral">&quot;, &quot;</span> COMPILER_VERSION <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="stringliteral">&quot;Target architecture: &quot;</span> TARGET_ARCH <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> build_config;</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;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="remmina__exec_8h.html#adbaf105af1039e44ba503a8d7174535f"> 89</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>()</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; TRACE_CALL(__func__);</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; <span class="comment">/* Save main window state/position */</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a>();</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; <span class="comment">/* Delete all widgets, main window not included */</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool_foreach</a>(<a class="code" href="remmina__exec_8c.html#a0ffd51ed283da4640c920e75e89e694a">cb_closewidget</a>, NULL);</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="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/* Remove systray menu */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="remmina__icon_8c.html#a25b1d13f76ddf6a51836d780eda5fab1">remmina_icon_destroy</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#endif</span></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; <span class="comment">/* close/destroy main window struct and window */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</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; <span class="comment">/* Exit from Remmina */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; g_application_quit(g_application_get_default());</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="l00111"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f"> 111</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f">disable_rcw_delete_confirm_cb</a>(GtkWidget *widget, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a> *rcw;</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; <span class="keywordflow">if</span> (REMMINA_IS_CONNECTION_WINDOW(widget)) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; rcw = (<a class="code" href="struct___remmina_connection_window.html">RemminaConnectionWindow</a>*)widget;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="rcw_8c.html#a4204fcd726a60493b290dd5590ec693d">rcw_set_delete_confirm_mode</a>(rcw, <a class="code" href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307fadd57127d30bc4755bf3a8323045922bc">RCW_ONDELETE_NOCONFIRM</a>);</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; <span class="keywordflow">return</span> TRUE;</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__exec_8h.html#aaa67e07e2426828d7e7b9b30d2038d31"> 123</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#aaa67e07e2426828d7e7b9b30d2038d31">remmina_application_condexit</a>(<a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5">RemminaCondExitType</a> why)</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; TRACE_CALL(__func__);</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="comment">/* Exit remmina only if there are no interesting windows left:</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * no main window, no systray menu, no connection window.</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * This function is usually called after a disconnection */</span></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; <span class="keywordflow">switch</span> (why) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a3272be70c922ec6a1eaf498461943c51">REMMINA_CONDEXIT_ONDISCONNECT</a>:</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// A connection has disconnected, should we exit remmina ?</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool_count</a>() &lt; 1 &amp;&amp; !<a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>() &amp;&amp; !<a class="code" href="remmina__icon_8c.html#a42f087b679b43b8a1d36cd9e9781a8b6">remmina_icon_is_available</a>())</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5ae79d14a54e119795478a6e390d7d3b40">REMMINA_CONDEXIT_ONMAINWINDELETE</a>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="comment">/* If we are in Kiosk mode, we just exit */</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</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="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// Main window has been deleted</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__widget__pool_8c.html#a9cbb5b8d01a6d44ba7b46434467c02f8">remmina_widget_pool_count</a>() &lt; 1 &amp;&amp; !<a class="code" href="remmina__icon_8c.html#a42f087b679b43b8a1d36cd9e9781a8b6">remmina_icon_is_available</a>())</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5a94dfcc0fcf38aa8060ff843e40799284">REMMINA_CONDEXIT_ONQUIT</a>:</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// Quit command has been sent from main window or appindicator/systray menu</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// quit means QUIT.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool_foreach</a>(<a class="code" href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f">disable_rcw_delete_confirm_cb</a>, NULL);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">break</span>;</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;}</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"><a class="line" href="remmina__exec_8c.html#aca2d356a03e1aac7b716b408183aa305"> 155</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#aca2d356a03e1aac7b716b408183aa305">newline_remove</a>(<span class="keywordtype">char</span> *s)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">char</span> c;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">while</span>((c = *s) != 0 &amp;&amp; c != <span class="charliteral">&#39;\r&#39;</span> &amp;&amp; c != <span class="charliteral">&#39;\n&#39;</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; s++;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; *s = 0;</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;<span class="comment">/* used for commandline parameter --update-profile X --set-option Y --set-option Z</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * return a status code for exit()</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="remmina__exec_8h.html#a4e202866339a104ffdbfa519cfbcdca9"> 166</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a>(gchar *profilefilename, gchar **settings)</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; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; gchar **tk, *value = NULL;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">char</span> *line = NULL;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">size_t</span> len = 0;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ssize_t read;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; gboolean abort = FALSE;</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; remminafile = <a class="code" href="remmina__file__manager_8c.html#af7b58659604660eb0cb40b0e0f8348ab">remmina_file_manager_load_file</a>(profilefilename);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span> (!remminafile) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; g_print(<span class="stringliteral">&quot;Unable to open profile file %s\n&quot;</span>, profilefilename);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> 2;</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"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">for</span>(i = 0; settings[i] != NULL &amp;&amp; !abort; i++) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (strlen(settings[i]) &gt; 0) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; tk = g_strsplit(settings[i], <span class="stringliteral">&quot;=&quot;</span>, 2);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (tk[1] == NULL) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; read = getline(&amp;line, &amp;len, stdin);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (read &gt; 0) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="remmina__exec_8c.html#aca2d356a03e1aac7b716b408183aa305">newline_remove</a>(line);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; value = line;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; g_print(<span class="stringliteral">&quot;Error: an extra line of standard input is needed\n&quot;</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; abort = TRUE;</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">else</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; value = tk[1];</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, tk[0], value);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; g_strfreev(tk);</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"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (line) free(line);</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; <span class="keywordflow">if</span> (!abort) <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> 0;</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;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#ae3299f9cf136cb759dc052ee799b1f0d"> 210</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#ae3299f9cf136cb759dc052ee799b1f0d">remmina_exec_autostart_cb</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gpointer user_data)</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;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</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;enable-autostart&quot;</span>, FALSE)) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Profile %s is set to autostart&quot;</span>, remminafile-&gt;filename);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(remminafile-&gt;filename);</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"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="remmina__exec_8c.html#ad4535dd84752c2943b8fb996ffcbcb58"> 221</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#ad4535dd84752c2943b8fb996ffcbcb58">remmina_exec_connect</a>(<span class="keyword">const</span> gchar *data)</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; TRACE_CALL(__func__);</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; gchar *protocol;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; gchar **protocolserver;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; gchar *server;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; gchar **userat;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; gchar **userpass;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; gchar *user;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; gchar *password;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; gchar **domainuser;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; gchar **serverquery;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; gchar **querystring;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; gchar **querystringpart;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; gchar **querystringpartkv;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; gchar *value;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; gchar *temp;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; protocol = NULL;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">&quot;rdp://&quot;</span>, data, 6) == 0 || strncmp(<span class="stringliteral">&quot;RDP://&quot;</span>, data, 6) == 0)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; protocol = <span class="stringliteral">&quot;RDP&quot;</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">&quot;vnc://&quot;</span>, data, 6) == 0 || strncmp(<span class="stringliteral">&quot;VNC://&quot;</span>, data, 6) == 0)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; protocol = <span class="stringliteral">&quot;VNC&quot;</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">&quot;ssh://&quot;</span>, data, 6) == 0 || strncmp(<span class="stringliteral">&quot;SSH://&quot;</span>, data, 6) == 0)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; protocol = <span class="stringliteral">&quot;SSH&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">&quot;spice://&quot;</span>, data, 8) == 0 || strncmp(<span class="stringliteral">&quot;SPICE://&quot;</span>, data, 8) == 0)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; protocol = <span class="stringliteral">&quot;SPICE&quot;</span>;</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; <span class="keywordflow">if</span> (strncmp(<span class="stringliteral">&quot;file://&quot;</span>, data, 6) == 0) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; gchar *filename = g_filename_from_uri (data, NULL, &amp;error);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (filename != NULL) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(filename);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Opening URI %s failed with error %s&quot;</span>, data, error-&gt;message);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; g_error_free(error);</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;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (protocol == NULL) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(data);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span>;</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; protocolserver = g_strsplit(data, <span class="stringliteral">&quot;://&quot;</span>, 2);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; server = g_strdup(protocolserver[1]);</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; <span class="comment">// Support loading .remmina files using handler</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> ((temp = strrchr(server, <span class="charliteral">&#39;.&#39;</span>)) != NULL &amp;&amp; g_strcmp0(temp + 1, <span class="stringliteral">&quot;remmina&quot;</span>) == 0) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; g_strfreev(protocolserver);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; temp = g_uri_unescape_string(server, NULL);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; g_free(server);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; server = temp;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a>(server);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">return</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; remminafile = <a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// Check for username@server</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> ((strcmp(protocol, <span class="stringliteral">&quot;RDP&quot;</span>) == 0 || strcmp(protocol, <span class="stringliteral">&quot;VNC&quot;</span>) == 0 || strcmp(protocol, <span class="stringliteral">&quot;SSH&quot;</span>) == 0) &amp;&amp; strstr(server, <span class="stringliteral">&quot;@&quot;</span>) != NULL) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; userat = g_strsplit(server, <span class="stringliteral">&quot;@&quot;</span>, 2);</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; <span class="comment">// Check for username:password</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span> (strstr(userat[0], <span class="stringliteral">&quot;:&quot;</span>) != NULL) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; userpass = g_strsplit(userat[0], <span class="stringliteral">&quot;:&quot;</span>, 2);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; user = g_uri_unescape_string(userpass[0], NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; password = g_uri_unescape_string(userpass[1], NULL);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Try to decrypt the password field if it contains =</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; temp = password != NULL &amp;&amp; strrchr(password, <span class="charliteral">&#39;=&#39;</span>) != NULL ? <a class="code" href="remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9">remmina_crypt_decrypt</a>(password) : NULL;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (temp != NULL) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; g_free(password);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; password = temp;</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; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, password);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; g_free(password);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; g_strfreev(userpass);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; user = g_uri_unescape_string(userat[0], NULL);</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;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Check for domain\user for RDP connections</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (strcmp(protocol, <span class="stringliteral">&quot;RDP&quot;</span>) == 0 &amp;&amp; strstr(user, <span class="stringliteral">&quot;\\&quot;</span>) != NULL) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; domainuser = g_strsplit(user, <span class="stringliteral">&quot;\\&quot;</span>, 2);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;domain&quot;</span>, domainuser[0]);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; g_free(user);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; user = g_strdup(domainuser[1]);</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; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, user);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; g_free(user);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; g_free(server);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; server = g_strdup(userat[1]);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; g_strfreev(userat);</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;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">if</span> (strcmp(protocol, <span class="stringliteral">&quot;VNC&quot;</span>) == 0 &amp;&amp; strstr(server, <span class="stringliteral">&quot;?&quot;</span>) != NULL) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">// https://tools.ietf.org/html/rfc7869</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// VncUsername, VncPassword and ColorLevel supported for vnc-params</span></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; <span class="comment">// Check for query string parameters</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; serverquery = g_strsplit(server, <span class="stringliteral">&quot;?&quot;</span>, 2);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; querystring = g_strsplit(serverquery[1], <span class="stringliteral">&quot;&amp;&quot;</span>, -1);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">for</span> (querystringpart = querystring; *querystringpart; querystringpart++) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span> (strstr(*querystringpart, <span class="stringliteral">&quot;=&quot;</span>) == NULL)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; querystringpartkv = g_strsplit(*querystringpart, <span class="stringliteral">&quot;=&quot;</span>, 2);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; value = g_uri_unescape_string(querystringpartkv[1], NULL);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">&quot;VncPassword&quot;</span>) == 0) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">// Try to decrypt password field if it contains =</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; temp = value != NULL &amp;&amp; strrchr(value, <span class="charliteral">&#39;=&#39;</span>) != NULL ? <a class="code" href="remmina__crypt_8c.html#a3fe2fa245d401146adf02a3a8f996ab9">remmina_crypt_decrypt</a>(value) : NULL;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (temp != NULL) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; g_free(value);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; value = temp;</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; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, value);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">&quot;VncUsername&quot;</span>) == 0) {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, value);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcmp(querystringpartkv[0], <span class="stringliteral">&quot;ColorLevel&quot;</span>) == 0) {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;colordepth&quot;</span>, value);</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; g_free(value);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; g_strfreev(querystringpartkv);</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_strfreev(querystring);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; g_free(server);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; server = g_strdup(serverquery[0]);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; g_strfreev(serverquery);</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; <span class="comment">// Unescape server</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; temp = g_uri_unescape_string(server, NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; g_free(server);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; server = temp;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</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="l00360"></a><span class="lineno"> 360</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="l00361"></a><span class="lineno"> 361</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="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;protocol&quot;</span>, protocol);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; g_free(server);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; g_strfreev(protocolserver);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a>(remminafile);</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"><a class="line" href="remmina__exec_8h.html#a424cabdcff647797061e7482049d62a7"> 368</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0c">RemminaCommandType</a> command, <span class="keyword">const</span> gchar* data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; gchar *s1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; gchar *s2;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; gchar *temp;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; GtkWindow *mainwindow;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; GtkWidget *prefdialog;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="struct___remmina_entry_plugin.html">RemminaEntryPlugin</a> *plugin;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordtype">int</span> ch;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; mainwindow = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</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="keywordflow">switch</span> (command) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8">REMMINA_COMMAND_AUTOSTART</a>:</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a>((GFunc)<a class="code" href="remmina__exec_8c.html#ae3299f9cf136cb759dc052ee799b1f0d">remmina_exec_autostart_cb</a>, NULL);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cae084d7c048c5eb5045210062b225f5e5">REMMINA_COMMAND_MAIN</a>:</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; gtk_window_present(mainwindow);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; gtk_window_deiconify(GTK_WINDOW(mainwindow));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; widget = <a class="code" href="remmina__main_8c.html#af14b1942a754d7b2f5c10266208ebe01">remmina_main_new</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; gtk_widget_show(widget);</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca822f35bcbc0737231ada0aa4ecfcd704">REMMINA_COMMAND_PREF</a>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</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="l00399"></a><span class="lineno"> 399</span>&#160; &amp;&amp; <a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(mainwindow) == 0)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; prefdialog = <a class="code" href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a>();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (prefdialog) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; gtk_window_present(GTK_WINDOW(prefdialog));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; gtk_window_deiconify(GTK_WINDOW(prefdialog));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">/* Create a new preference dialog */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; widget = <a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(atoi(data), NULL);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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="l00414"></a><span class="lineno"> 414</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="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(mainwindow) == 0)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; s1 = (data ? strchr(data, <span class="charliteral">&#39;,&#39;</span>) : NULL);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (s1) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; s1 = g_strdup(data);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; s2 = strchr(s1, <span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; *s2++ = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#ab563344276cbcdf0fcea05b0b64c7aeb">remmina_file_editor_new_full</a>(s2, s1);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; g_free(s1);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#ab563344276cbcdf0fcea05b0b64c7aeb">remmina_file_editor_new_full</a>(NULL, data);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a>:</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Initiating connection&quot;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</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_connect&quot;</span>)</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</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="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(mainwindow) == 0)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="remmina__exec_8c.html#ad4535dd84752c2943b8fb996ffcbcb58">remmina_exec_connect</a>(data);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">break</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; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caddf76fb98da2a8a197974ac1237dfb65">REMMINA_COMMAND_EDIT</a>:</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</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="l00445"></a><span class="lineno"> 445</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="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__unlock_8c.html#a81e79e5c1c230b7e2bf27b2457801d4e">remmina_unlock_new</a>(mainwindow) == 0)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; widget = <a class="code" href="remmina__file__editor_8c.html#aa9345cfe3fb32d326b652e96ee55eaea">remmina_file_editor_new_from_filename</a>(data);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (widget)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacce474bb2b63053b884cc9e639d4372b">REMMINA_COMMAND_ABOUT</a>:</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a>(NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">break</span>;</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"> 457</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0caa436b39160d5ab6b73f6758dc5c30c06">REMMINA_COMMAND_VERSION</a>:</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; mainwindow = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="remmina__about_8c.html#a3ad768979e0945a162018c6d596c90f4">remmina_about_open</a>(NULL);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; g_print(<span class="stringliteral">&quot;%s %s %s (git %s)\n&quot;</span>, g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">/* As we do not use the &quot;handle-local-options&quot; signal, we have to exit Remmina */</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a>, NULL);</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">break</span>;</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"> 469</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885">REMMINA_COMMAND_FULL_VERSION</a>:</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; mainwindow = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (mainwindow) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">/* Show th widget with the list of plugins and versions */</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a>(mainwindow);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; g_print(<span class="stringliteral">&quot;\n%s %s %s (git %s)\n\n&quot;</span>, g_get_application_name(), ISSNAP, VERSION, REMMINA_GIT_REVISION);</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; <a class="code" href="remmina__plugin__manager_8c.html#afe0881986b2a64bfb5460981dadcf28d">remmina_plugin_manager_show_stdout</a>();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; g_print(<span class="stringliteral">&quot;\n%s\n&quot;</span>, <a class="code" href="remmina__exec_8c.html#a93f5633a6348dc1df1a5723b3054a2a3">remmina_exec_get_build_config</a>());</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="remmina__exec_8c.html#a424cabdcff647797061e7482049d62a7">remmina_exec_command</a>(<a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a>, NULL);</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;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cabb2bf3aea0dd6f02ba402ec12a6ccbad">REMMINA_COMMAND_PLUGIN</a>:</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; plugin = (<a class="code" href="struct___remmina_entry_plugin.html">RemminaEntryPlugin</a>*)<a class="code" href="remmina__plugin__manager_8c.html#a3872c8656a8a3d5147bcc603471c1932">remmina_plugin_manager_get_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aae2648710d57bdd48a15a95e9c4cc234e">REMMINA_PLUGIN_TYPE_ENTRY</a>, data);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_entry_plugin.html#afb2a9a6ff9289c08eccaaec0962f3c19">entry_func</a>(plugin);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; widget = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; _(<span class="stringliteral">&quot;Plugin %s is not registered.&quot;</span>), data);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(gtk_widget_destroy), NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(widget);</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="keywordflow">break</span>;</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; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab4e4dc22219fe0323279276222efb0b5">REMMINA_COMMAND_ENCRYPT_PASSWORD</a>:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; i = 0;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; g_print(<span class="stringliteral">&quot;Enter the password you want to encrypt: &quot;</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; temp = (<span class="keywordtype">char</span> *)g_malloc(255 * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">while</span> ((ch = getchar()) != EOF &amp;&amp; ch != <span class="charliteral">&#39;\n&#39;</span>) {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span> (i &lt; 254) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; temp[i] = ch;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; i++;</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; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; temp[i] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; s1 = <a class="code" href="remmina__crypt_8c.html#aa02cf0fed3eb68d6a89815c3ba3bf7b1">remmina_crypt_encrypt</a>(temp);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; s2 = g_uri_escape_string(s1, NULL, TRUE);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; g_print(<span class="stringliteral">&quot;\nEncrypted password: %s\n\n&quot;</span>, s1);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; g_print(<span class="stringliteral">&quot;Usage:\n&quot;</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; g_print(<span class="stringliteral">&quot;rdp://username:%s@server\n&quot;</span>, s1);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; g_print(<span class="stringliteral">&quot;vnc://username:%s@server\n&quot;</span>, s1);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; g_print(<span class="stringliteral">&quot;vnc://server?VncUsername=user\\&amp;VncPassword=%s\n&quot;</span>, s2);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; g_free(s1);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; g_free(s2);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; g_free(temp);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca5815f1d3742909a0a2a61664ad35300a">REMMINA_COMMAND_EXIT</a>:</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#a53fad3994b2550300cfd4fd8bb2a2b5b">remmina_widget_pool_foreach</a>(<a class="code" href="remmina__exec_8c.html#aacc2a2ffd19e56fcb3e4b025d180ab8f">disable_rcw_delete_confirm_cb</a>, NULL);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a>();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;}</div><div class="ttc" id="remmina__exec_8c_html_a4e202866339a104ffdbfa519cfbcdca9"><div class="ttname"><a href="remmina__exec_8c.html#a4e202866339a104ffdbfa519cfbcdca9">remmina_exec_set_setting</a></div><div class="ttdeci">int remmina_exec_set_setting(gchar *profilefilename, gchar **settings)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00166">remmina_exec.c:166</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__exec_8h_html_ae9dfd6986f18cb3d846a4933ac792fd5"><div class="ttname"><a href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5">RemminaCondExitType</a></div><div class="ttdeci">RemminaCondExitType</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00058">remmina_exec.h:58</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>
+<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#l01634">remmina_main.c:1634</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cab9f0b4fd42775c1d2b2311e0b9692885">REMMINA_COMMAND_FULL_VERSION</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00051">remmina_exec.h: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>
<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>
@@ -105,8 +105,8 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<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_a42f087b679b43b8a1d36cd9e9781a8b6"><div class="ttname"><a href="remmina__icon_8c.html#a42f087b679b43b8a1d36cd9e9781a8b6">remmina_icon_is_available</a></div><div class="ttdeci">gboolean remmina_icon_is_available(void)</div><div class="ttdoc">Determine whenever the Remmina icon is available. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00313">remmina_icon.c:313</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_ab563344276cbcdf0fcea05b0b64c7aeb"><div class="ttname"><a href="remmina__file__editor_8c.html#ab563344276cbcdf0fcea05b0b64c7aeb">remmina_file_editor_new_full</a></div><div class="ttdeci">GtkWidget * remmina_file_editor_new_full(const gchar *server, const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l02038">remmina_file_editor.c:2038</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>
-<div class="ttc" id="remmina__main_8c_html_a009f32092bd1d8dcd8e783d25416f3df"><div class="ttname"><a href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy()</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00177">remmina_main.c:177</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#l01551">remmina_main.c:1551</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a009f32092bd1d8dcd8e783d25416f3df"><div class="ttname"><a href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy()</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00176">remmina_main.c:176</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_a93f5633a6348dc1df1a5723b3054a2a3"><div class="ttname"><a href="remmina__exec_8c.html#a93f5633a6348dc1df1a5723b3054a2a3">remmina_exec_get_build_config</a></div><div class="ttdeci">const gchar * remmina_exec_get_build_config(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00078">remmina_exec.c:78</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="struct___remmina_entry_plugin_html"><div class="ttname"><a href="struct___remmina_entry_plugin.html">_RemminaEntryPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00090">plugin.h:90</a></div></div>
@@ -127,10 +127,10 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca2b493ae3acf856c484831767169c41b7">REMMINA_COMMAND_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00046">remmina_exec.h:46</a></div></div>
<div class="ttc" id="remmina__file__editor_8h_html"><div class="ttname"><a href="remmina__file__editor_8h.html">remmina_file_editor.h</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_a206abe0e916081b29c5faa52330e2271"><div class="ttname"><a href="remmina__exec_8c.html#a206abe0e916081b29c5faa52330e2271">remmina_exec_exitremmina</a></div><div class="ttdeci">void remmina_exec_exitremmina()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00089">remmina_exec.c:89</a></div></div>
-<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="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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0cacc1267f3834ff091be0587522f2182b8">REMMINA_COMMAND_AUTOSTART</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00054">remmina_exec.h:54</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_a95532ac6d110eeeb2e41d4b2a329797c"><div class="ttname"><a href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00190">remmina_main.c:190</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a95532ac6d110eeeb2e41d4b2a329797c"><div class="ttname"><a href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00189">remmina_main.c:189</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a5e421ba636d34e21bba5ece463e98892"><div class="ttname"><a href="remmina__file_8c.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="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#l04438">rcw.c:4438</a></div></div>
@@ -146,7 +146,7 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<div class="ttc" id="rcw_8h_html_a2450dfe27d3ded59370ea879419f307fadd57127d30bc4755bf3a8323045922bc"><div class="ttname"><a href="rcw_8h.html#a2450dfe27d3ded59370ea879419f307fadd57127d30bc4755bf3a8323045922bc">RCW_ONDELETE_NOCONFIRM</a></div><div class="ttdef"><b>Definition:</b> <a href="rcw_8h_source.html#l00068">rcw.h:68</a></div></div>
<div class="ttc" id="rcw_8c_html_aa37f2a9c56df0ce1a0dbc32f8989e4b5"><div class="ttname"><a href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a></div><div class="ttdeci">gboolean rcw_open_from_filename(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04390">rcw.c:4390</a></div></div>
<div class="ttc" id="remmina__exec_8c_html_a0ffd51ed283da4640c920e75e89e694a"><div class="ttname"><a href="remmina__exec_8c.html#a0ffd51ed283da4640c920e75e89e694a">cb_closewidget</a></div><div class="ttdeci">static gboolean cb_closewidget(GtkWidget *widget, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8c_source.html#l00067">remmina_exec.c:67</a></div></div>
-<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#l00086">remmina.c:86</a></div></div>
+<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#l00085">remmina.c:85</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#l00469">remmina_file.c:469</a></div></div>
@@ -160,9 +160,9 @@ $(document).ready(function(){initNavTree('remmina__exec_8c_source.html','');});
<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="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca3b100b365ea4c523dba34c3a1233e33d">REMMINA_COMMAND_CONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00047">remmina_exec.h:47</a></div></div>
<div class="ttc" id="remmina__exec_8h_html"><div class="ttname"><a href="remmina__exec_8h.html">remmina_exec.h</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00691">remmina_pref_dialog.c:691</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00686">remmina_pref_dialog.c:686</a></div></div>
<div class="ttc" id="remmina__unlock_8h_html"><div class="ttname"><a href="remmina__unlock_8h.html">remmina_unlock.h</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a9f24dad52fd8f57961ac7c5df58f251e"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00847">remmina_pref_dialog.c:847</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a9f24dad52fd8f57961ac7c5df58f251e"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00840">remmina_pref_dialog.c:840</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_a55a717aafc046713380bd2c55f29165a"><div class="ttname"><a href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a></div><div class="ttdeci">gint remmina_file_manager_iterate(GFunc func, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00177">remmina_file_manager.c:177</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_a23616cb0334a45c2b477be6efd45ee0ca822f35bcbc0737231ada0aa4ecfcd704"><div class="ttname"><a href="remmina__exec_8h.html#a23616cb0334a45c2b477be6efd45ee0ca822f35bcbc0737231ada0aa4ecfcd704">REMMINA_COMMAND_PREF</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00045">remmina_exec.h:45</a></div></div>
<div class="ttc" id="remmina__file_8h_html"><div class="ttname"><a href="remmina__file_8h.html">remmina_file.h</a></div></div>
diff --git a/public/remmina__file_8c_source.html b/public/remmina__file_8c_source.html
index 900dd74d3..ebcabc672 100644
--- a/public/remmina__file_8c_source.html
+++ b/public/remmina__file_8c_source.html
@@ -122,7 +122,7 @@ $(document).ready(function(){initNavTree('remmina__file_8c_source.html','');});
<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#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="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#l01646">remmina_main.c:1646</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#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>
@@ -135,7 +135,7 @@ $(document).ready(function(){initNavTree('remmina__file_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__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#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__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#l01663">remmina_main.c:1663</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#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>
diff --git a/public/remmina__file__editor_8c_source.html b/public/remmina__file__editor_8c_source.html
index bf7fbc79e..19cc9e3fa 100644
--- a/public/remmina__file__editor_8c_source.html
+++ b/public/remmina__file__editor_8c_source.html
@@ -94,7 +94,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<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#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__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#l01031">remmina_pref.c:1031</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>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350aadb70e5d52a6eccc1aaf6f1428c1fb11"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350aadb70e5d52a6eccc1aaf6f1428c1fb11">REMMINA_PROTOCOL_SETTING_TYPE_TEXTAREA</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00106">types.h:106</a></div></div>
@@ -106,7 +106,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<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>
<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#l00078">rcw.c:78</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>
+<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#l01634">remmina_main.c:1634</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a68b440d346168aadb6fd728ea394607f"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a68b440d346168aadb6fd728ea394607f">REMMINA_PROTOCOL_SETTING_TYPE_FOLDER</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00111">types.h:111</a></div></div>
<div class="ttc" id="remmina__string__list_8c_html_a500b85eafd23280f998d2980d1eba80e"><div class="ttname"><a href="remmina__string__list_8c.html#a500b85eafd23280f998d2980d1eba80e">remmina_string_list_set_validation_func</a></div><div class="ttdeci">void remmina_string_list_set_validation_func(RemminaStringListValidationFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__list_8c_source.html#l00247">remmina_string_list.c:247</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_abb7466f51c11427405a54c94767a52de"><div class="ttname"><a href="remmina__file__editor_8c.html#abb7466f51c11427405a54c94767a52de">G_DEFINE_TYPE</a></div><div class="ttdeci">G_DEFINE_TYPE(RemminaFileEditor, remmina_file_editor, GTK_TYPE_DIALOG)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00058">remmina_file_editor.c:58</a></div></div>
@@ -129,7 +129,7 @@ $(document).ready(function(){initNavTree('remmina__file__editor_8c_source.html',
<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__public_8c_html_a098786d3aa6991aeba43a61e29d534d0"><div class="ttname"><a href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public_resolution_validation_func</a></div><div class="ttdeci">gboolean remmina_public_resolution_validation_func(const gchar *new_str, gchar **error)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00598">remmina_public.c:598</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_a024d3e6d752dd29828b31c60c8c7c201"><div class="ttname"><a href="struct___remmina_plugin.html#a024d3e6d752dd29828b31c60c8c7c201">_RemminaPlugin::domain</a></div><div class="ttdeci">const gchar * domain</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00060">plugin.h:60</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00993">remmina_pref.c:993</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00957">remmina_pref.c:957</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html"><div class="ttname"><a href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_af7edb004da0ecc48277c1b656f2649ae"><div class="ttname"><a href="remmina__file__editor_8c.html#af7edb004da0ecc48277c1b656f2649ae">remmina_file_editor_create_server</a></div><div class="ttdeci">static void remmina_file_editor_create_server(RemminaFileEditor *gfe, const RemminaProtocolSetting *setting, GtkWidget *grid, gint row)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l00426">remmina_file_editor.c:426</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>
diff --git a/public/remmina__file__manager_8c_source.html b/public/remmina__file__manager_8c_source.html
index c7f4d8da4..ba29e1733 100644
--- a/public/remmina__file__manager_8c_source.html
+++ b/public/remmina__file__manager_8c_source.html
@@ -104,7 +104,7 @@ $(document).ready(function(){initNavTree('remmina__file__manager_8c_source.html'
<div class="ttc" id="remmina__string__array_8c_html_a96f7bec7ce32de6cf5deadcd5aec51ec"><div class="ttname"><a href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a></div><div class="ttdeci">gchar * remmina_string_array_to_string(RemminaStringArray *array)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00155">remmina_string_array.c:155</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a85d5bd836f83ef1dbbcf4657f32e0792"><div class="ttname"><a href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a></div><div class="ttdeci">node_t * node</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00140">remmina_ssh.c:140</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_a4d6280ce5d9e70ceb43dd24639d843d3"><div class="ttname"><a href="remmina__file__manager_8c.html#a4d6280ce5d9e70ceb43dd24639d843d3">remmina_file_manager_do_copy</a></div><div class="ttdeci">static gboolean remmina_file_manager_do_copy(const char *src_path, const char *dst_path)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00097">remmina_file_manager.c:97</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_afa2b1889dced4289b0f7d7edffc82e72"><div class="ttname"><a href="remmina__file__manager_8c.html#afa2b1889dced4289b0f7d7edffc82e72">remmina_file_manager_init</a></div><div class="ttdeci">void remmina_file_manager_init(void)</div><div class="ttdoc">It creates the Remmina data and cache folders. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00116">remmina_file_manager.c:116</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<div class="ttc" id="remmina__string__array_8h_html"><div class="ttname"><a href="remmina__string__array_8h.html">remmina_string_array.h</a></div></div>
diff --git a/public/remmina__icon_8c_source.html b/public/remmina__icon_8c_source.html
index 326cd4d66..ce61113ee 100644
--- a/public/remmina__icon_8c_source.html
+++ b/public/remmina__icon_8c_source.html
@@ -142,7 +142,7 @@ $(document).ready(function(){initNavTree('remmina__icon_8c_source.html','');});
<div class="ttc" id="struct___remmina_applet_menu_html"><div class="ttname"><a href="struct___remmina_applet_menu.html">_RemminaAppletMenu</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__applet__menu_8h_source.html#l00058">remmina_applet_menu.h:58</a></div></div>
<div class="ttc" id="remmina__applet__menu__item_8h_html_a75e42156d38612a96ae48899316b4727a9edd77222ca6a7576822feebf0588572"><div class="ttname"><a href="remmina__applet__menu__item_8h.html#a75e42156d38612a96ae48899316b4727a9edd77222ca6a7576822feebf0588572">REMMINA_APPLET_MENU_ITEM_FILE</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="remmina__pref_8h_html"><div class="ttname"><a href="remmina__pref_8h.html">remmina_pref.h</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="remmina__sysinfo_8c_html_ae6ecf91edb905f3b2b39e33e05325590"><div class="ttname"><a href="remmina__sysinfo_8c.html#ae6ecf91edb905f3b2b39e33e05325590">remmina_sysinfo_is_appindicator_available</a></div><div class="ttdeci">gboolean remmina_sysinfo_is_appindicator_available()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sysinfo_8c_source.html#l00045">remmina_sysinfo.c:45</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a999b74e3aab2e7fbc4431e803511b568"><div class="ttname"><a href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">_RemminaPref::applet_new_ontop</a></div><div class="ttdeci">gboolean applet_new_ontop</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00161">remmina_pref.h:161</a></div></div>
<div class="ttc" id="remmina__icon_8c_html_a5cdf1958ef01e49889bcee2e90e2cf71"><div class="ttname"><a href="remmina__icon_8c.html#a5cdf1958ef01e49889bcee2e90e2cf71">remmina_icon_about</a></div><div class="ttdeci">static void remmina_icon_about(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00106">remmina_icon.c:106</a></div></div>
diff --git a/public/remmina__log_8c_source.html b/public/remmina__log_8c_source.html
index b90dd83ed..61361d31b 100644
--- a/public/remmina__log_8c_source.html
+++ b/public/remmina__log_8c_source.html
@@ -106,7 +106,7 @@ $(document).ready(function(){initNavTree('remmina__log_8c_source.html','');});
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<div class="ttc" id="struct___remmina_log_window_class_html"><div class="ttname"><a href="struct___remmina_log_window_class.html">_RemminaLogWindowClass</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00062">remmina_log.c:62</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__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="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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a1e5960f194353bd36d82bd9476c309bd"><div class="ttname"><a href="remmina__log_8c.html#a1e5960f194353bd36d82bd9476c309bd">remmina_log_window_init</a></div><div class="ttdeci">static void remmina_log_window_init(RemminaLogWindow *logwin)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00444">remmina_log.c:444</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a49817b70a398a2f21514fb0066c6e04c"><div class="ttname"><a href="remmina__log_8c.html#a49817b70a398a2f21514fb0066c6e04c">_remmina_info</a></div><div class="ttdeci">void _remmina_info(const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00205">remmina_log.c:205</a></div></div>
<div class="ttc" id="remmina__log_8c_html_a43a42f51f64b54924564e166c56b39e1"><div class="ttname"><a href="remmina__log_8c.html#a43a42f51f64b54924564e166c56b39e1">remmina_log_on_keypress</a></div><div class="ttdeci">static gboolean remmina_log_on_keypress(GtkWidget *widget, GdkEvent *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__log_8c_source.html#l00425">remmina_log.c:425</a></div></div>
diff --git a/public/remmina__main_8c.html b/public/remmina__main_8c.html
index 663896bf4..76d899fce 100644
--- a/public/remmina__main_8c.html
+++ b/public/remmina__main_8c.html
@@ -222,8 +222,6 @@ Functions</h2></td></tr>
<tr class="separator:a5db4436cc72b9d5ea3e498f8519efecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac0bb51159be042fecab0103e73a54dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
<tr class="separator:aac0bb51159be042fecab0103e73a54dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
-<tr class="separator:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f5f9a964a75214d500e7a9fca1bd8a6"><td class="memItemLeft" align="right" valign="top">static gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6">is_empty</a> (const gchar *s)</td></tr>
<tr class="separator:a1f5f9a964a75214d500e7a9fca1bd8a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a802458852abacebfb16f1f4295806a01"><td class="memItemLeft" align="right" valign="top">static gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01">remmina_main_quickconnect</a> (void)</td></tr>
@@ -340,7 +338,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01252">1252</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01241">1241</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -384,7 +382,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01131">1131</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01130">1130</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -428,7 +426,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01462">1462</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01451">1451</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -456,7 +454,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00258">258</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00257">257</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -476,7 +474,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00190">190</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00189">189</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -506,7 +504,7 @@ Variables</h2></td></tr>
<p>Try to exit remmina after a delete window event. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00215">215</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00214">214</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -534,7 +532,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00443">443</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00442">442</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -562,7 +560,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00414">414</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00413">413</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -600,7 +598,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00802">802</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00801">801</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -636,7 +634,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01386">1386</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01375">1375</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -672,7 +670,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01401">1401</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01390">1390</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -714,7 +712,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01368">1368</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01357">1357</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -752,7 +750,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00512">512</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00511">511</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -796,7 +794,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00524">524</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00523">523</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -816,7 +814,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01645">1645</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01634">1634</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -836,7 +834,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00232">232</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00231">231</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -864,7 +862,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01088">1088</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01087">1087</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -893,7 +891,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>Set entry_quick_connect_server as default search entry. Weirdly. This does not work yet. </dd></dl>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01481">1481</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01470">1470</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -931,7 +929,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00352">352</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00351">351</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -969,7 +967,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00480">480</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00479">479</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1013,7 +1011,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00452">452</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00451">451</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1041,7 +1039,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00404">404</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00403">403</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1085,7 +1083,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00377">377</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00376">376</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1112,7 +1110,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00643">643</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00642">642</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1148,7 +1146,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00759">759</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00758">758</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1168,7 +1166,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01562">1562</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01551">1551</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1204,7 +1202,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01008">1008</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01007">1007</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1224,7 +1222,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01355">1355</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01344">1344</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1260,7 +1258,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01236">1236</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01235">1235</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1296,7 +1294,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01190">1190</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01189">1189</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1332,7 +1330,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01044">1044</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01043">1043</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1368,43 +1366,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00811">811</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
-
-</div>
-</div>
-<a id="a0b4ec1e78b79adaa180a385ac50c20d6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0b4ec1e78b79adaa180a385ac50c20d6">&#9670;&nbsp;</a></span>remmina_main_on_action_application_news()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void remmina_main_on_action_application_news </td>
- <td>(</td>
- <td class="paramtype">GSimpleAction *&#160;</td>
- <td class="paramname"><em>action</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">GVariant *&#160;</td>
- <td class="paramname"><em>param</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">gpointer&#160;</td>
- <td class="paramname"><em>data</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01242">1242</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00810">810</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1440,7 +1402,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01184">1184</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01183">1183</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1476,7 +1438,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01016">1016</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01015">1015</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1512,7 +1474,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01070">1070</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01069">1069</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1548,7 +1510,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01333">1333</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01322">1322</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1584,7 +1546,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00765">765</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00764">764</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1620,7 +1582,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00907">907</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00906">906</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1656,7 +1618,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00974">974</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00973">973</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1692,7 +1654,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00943">943</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00942">942</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1728,7 +1690,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00793">793</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00792">792</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1764,7 +1726,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00848">848</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00847">847</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1800,7 +1762,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01361">1361</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01350">1350</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1836,7 +1798,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01218">1218</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01217">1217</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1872,7 +1834,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01230">1230</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01229">1229</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1908,7 +1870,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01224">1224</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01223">1223</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1944,7 +1906,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01206">1206</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01205">1205</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1980,7 +1942,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01212">1212</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01211">1211</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2016,7 +1978,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01339">1339</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01328">1328</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2052,7 +2014,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01155">1155</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01154">1154</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2088,7 +2050,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01143">1143</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01142">1142</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2107,7 +2069,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01078">1078</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01077">1077</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2143,7 +2105,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00222">222</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00221">221</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2165,7 +2127,7 @@ Variables</h2></td></tr>
<p>Called when the remminamain-&gt;window widget is destroyed (glade event handler) </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00245">245</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00244">244</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2231,7 +2193,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01443">1443</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01432">1432</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2261,7 +2223,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01553">1553</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01542">1542</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2280,7 +2242,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00888">888</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00887">887</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2316,7 +2278,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01474">1474</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01463">1463</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2346,7 +2308,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01327">1327</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01316">1316</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2376,7 +2338,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01423">1423</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01412">1412</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2418,7 +2380,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01416">1416</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01405">1405</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2446,7 +2408,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01264">1264</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01253">1253</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2476,7 +2438,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01318">1318</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01307">1307</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2499,7 +2461,7 @@ Variables</h2></td></tr>
<p>Save the Remmina Main Window size and the expanded group before to close Remmina. </p>
<p>This function uses remmina_main_save_size and remmina_main_save_expanded_group. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00177">177</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00176">176</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2527,7 +2489,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00161">161</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00160">160</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2571,7 +2533,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00147">147</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00146">146</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2601,7 +2563,7 @@ Variables</h2></td></tr>
<p>Save the Remmina Main Window size to assure the main geometry at each restart. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00136">136</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00135">135</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2645,7 +2607,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00867">867</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00866">866</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2673,7 +2635,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00615">615</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00614">614</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2729,7 +2691,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00319">319</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00318">318</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2765,7 +2727,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01664">1664</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01653">1653</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2792,7 +2754,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00269">269</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00268">268</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2812,7 +2774,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01674">1674</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01663">1663</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2862,7 +2824,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00878">878</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00877">877</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2882,7 +2844,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01657">1657</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01646">1646</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2906,19 +2868,18 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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">}</div><div class="ttc" id="remmina__main_8c_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01206">remmina_main.c:1206</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a0b4ec1e78b79adaa180a385ac50c20d6"><div class="ttname"><a href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a></div><div class="ttdeci">void remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01242">remmina_main.c:1242</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00811">remmina_main.c:811</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01230">remmina_main.c:1230</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01212">remmina_main.c:1212</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01044">remmina_main.c:1044</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01224">remmina_main.c:1224</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01016">remmina_main.c:1016</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01218">remmina_main.c:1218</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__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="remmina__main_8c_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01236">remmina_main.c:1236</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01184">remmina_main.c:1184</a></div></div>
+<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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">}</div><div class="ttc" id="remmina__main_8c_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01205">remmina_main.c:1205</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00810">remmina_main.c:810</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01229">remmina_main.c:1229</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01211">remmina_main.c:1211</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01043">remmina_main.c:1043</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01223">remmina_main.c:1223</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01015">remmina_main.c:1015</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01217">remmina_main.c:1217</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#l01189">remmina_main.c:1189</a></div></div>
+<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#l01069">remmina_main.c:1069</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01235">remmina_main.c:1235</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01183">remmina_main.c:1183</a></div></div>
</div><!-- fragment -->
<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00093">93</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
@@ -2943,19 +2904,19 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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">}</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="remmina__main_8c_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01143">remmina_main.c:1143</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00907">remmina_main.c:907</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01333">remmina_main.c:1333</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_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00974">remmina_main.c:974</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00793">remmina_main.c:793</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00943">remmina_main.c:943</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01361">remmina_main.c:1361</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01339">remmina_main.c:1339</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01155">remmina_main.c:1155</a></div></div>
+<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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"> { <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">}</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#l00764">remmina_main.c:764</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01142">remmina_main.c:1142</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00906">remmina_main.c:906</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01322">remmina_main.c:1322</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#l00847">remmina_main.c:847</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00973">remmina_main.c:973</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00792">remmina_main.c:792</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00942">remmina_main.c:942</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01350">remmina_main.c:1350</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01328">remmina_main.c:1328</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01154">remmina_main.c:1154</a></div></div>
</div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00109">109</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00108">108</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -2979,7 +2940,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> <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">}</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00128">128</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00127">127</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -3003,7 +2964,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">=</div><div class="line">{</div><div class="line"> { <span class="stringliteral">&quot;text/uri-list&quot;</span>, 0, 1 }</div><div class="line">}</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00123">123</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00122">122</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__main_8c.js b/public/remmina__main_8c.js
index db4d2f5e0..75137a0a9 100644
--- a/public/remmina__main_8c.js
+++ b/public/remmina__main_8c.js
@@ -42,7 +42,6 @@ var remmina__main_8c =
[ "remmina_main_on_action_application_dark_theme", "remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b", null ],
[ "remmina_main_on_action_application_default", "remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1", null ],
[ "remmina_main_on_action_application_mpchange", "remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229", null ],
- [ "remmina_main_on_action_application_news", "remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6", null ],
[ "remmina_main_on_action_application_plugins", "remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc", null ],
[ "remmina_main_on_action_application_preferences", "remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92", null ],
[ "remmina_main_on_action_application_quit", "remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a", null ],
diff --git a/public/remmina__main_8c_source.html b/public/remmina__main_8c_source.html
index 1c549cacc..f2a665df8 100644
--- a/public/remmina__main_8c_source.html
+++ b/public/remmina__main_8c_source.html
@@ -86,11 +86,11 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="title">remmina_main.c</div> </div>
</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>
+<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;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="l00096"></a><span class="lineno"> 96</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="l00097"></a><span class="lineno"> 97</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="l00098"></a><span class="lineno"> 98</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="l00099"></a><span class="lineno"> 99</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="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</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="l00102"></a><span class="lineno"> 102</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="l00103"></a><span class="lineno"> 103</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="l00104"></a><span class="lineno"> 104</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="l00105"></a><span class="lineno"> 105</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="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"><a class="line" href="remmina__main_8c.html#af146cc1f982c98a9c8a5ac43cc1508f3"> 108</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="l00109"></a><span class="lineno"> 109</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="l00110"></a><span class="lineno"> 110</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="l00111"></a><span class="lineno"> 111</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="l00112"></a><span class="lineno"> 112</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="l00113"></a><span class="lineno"> 113</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="l00114"></a><span class="lineno"> 114</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="l00115"></a><span class="lineno"> 115</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="l00116"></a><span class="lineno"> 116</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="l00117"></a><span class="lineno"> 117</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="l00118"></a><span class="lineno"> 118</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="l00119"></a><span class="lineno"> 119</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="l00120"></a><span class="lineno"> 120</span>&#160;};</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"><a class="line" href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda"> 122</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="l00123"></a><span class="lineno"> 123</span>&#160;{</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; { <span class="stringliteral">&quot;text/uri-list&quot;</span>, 0, 1 }</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;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c"> 127</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="l00128"></a><span class="lineno"> 128</span>&#160;{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</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="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="l00135"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee"> 135</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="l00136"></a><span class="lineno"> 136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="l00139"></a><span class="lineno"> 139</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="l00140"></a><span class="lineno"> 140</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="l00141"></a><span class="lineno"> 141</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</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="l00143"></a><span class="lineno"> 143</span>&#160; }</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"><a class="line" href="remmina__main_8c.html#a51880fc109db6457a5d0fc543c2deaf2"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160;{</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; gchar *group;</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; 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="l00153"></a><span class="lineno"> 153</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="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (group) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</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="l00156"></a><span class="lineno"> 156</span>&#160; g_free(group);</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;}</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"><a class="line" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40"> 160</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="l00161"></a><span class="lineno"> 161</span>&#160;{</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</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="l00164"></a><span class="lineno"> 164</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="l00165"></a><span class="lineno"> 165</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="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</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="l00168"></a><span class="lineno"> 168</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="l00169"></a><span class="lineno"> 169</span>&#160; }</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="l00176"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5"> 176</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="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</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="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span>;</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"> 182</span>&#160; <a class="code" href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee">remmina_main_save_size</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</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="l00185"></a><span class="lineno"> 185</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="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</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__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8"> 189</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="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> (remminamain) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</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="l00195"></a><span class="lineno"> 195</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="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; g_object_unref(remminamain-&gt;<a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</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="l00199"></a><span class="lineno"> 199</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="l00200"></a><span class="lineno"> 200</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="l00201"></a><span class="lineno"> 201</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="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#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</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="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#a606c7e6dc78219e8e5536519db723a4d">selected_name</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>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; g_free(remminamain);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; remminamain = NULL;</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;}</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2"> 214</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="l00215"></a><span class="lineno"> 215</span>&#160;{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</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="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> FALSE;</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"> 220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302"> 221</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="l00222"></a><span class="lineno"> 222</span>&#160;{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a>();</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; g_idle_add(<a class="code" href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2">remmina_main_dexit</a>, NULL);</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> FALSE;</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__main_8c.html#a829d3ad1468d780380ae1ad693532e82"> 231</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="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;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (remminamain)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a>();</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5"> 244</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="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordflow">if</span> (remminamain) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">/* Invalidate remminamain-&gt;window to avoid multiple destructions */</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a> = NULL;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="comment">/* Destroy remminamain struct, later. We can&#39;t destroy</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> * important objects like the builder now */</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</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="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"><a class="line" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12"> 257</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="l00258"></a><span class="lineno"> 258</span>&#160;{</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</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="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#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</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="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#a606c7e6dc78219e8e5536519db723a4d">selected_name</a> = NULL;</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"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></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"><a class="line" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5"> 268</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="l00269"></a><span class="lineno"> 269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; GtkBuilder *dlgbuilder = NULL;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; GtkWidget *dlg;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; GtkWindow *parent;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">static</span> gboolean shown_once = FALSE;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; gboolean need_snap_interface_connections = FALSE;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; GtkWidget *dsa;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</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="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (shown_once)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; shown_once = TRUE;</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; g_print(<span class="stringliteral">&quot;Remmina is compiled as a SNAP package.\n&quot;</span>);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</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="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (remmina_secret_plugin == NULL) {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</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="l00288"></a><span class="lineno"> 288</span>&#160; need_snap_interface_connections = TRUE;</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; <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="l00291"></a><span class="lineno"> 291</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="l00292"></a><span class="lineno"> 292</span>&#160; need_snap_interface_connections = TRUE;</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"> 296</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="l00297"></a><span class="lineno"> 297</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="l00298"></a><span class="lineno"> 298</span>&#160; dsa = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">&quot;dontshowagain&quot;</span>));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (dlgbuilder) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; parent = <a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; dlg = GTK_WIDGET(gtk_builder_get_object(dlgbuilder, <span class="stringliteral">&quot;SnapInfoDlg&quot;</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dlg), parent);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; gtk_builder_connect_signals(dlgbuilder, NULL);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; result = gtk_dialog_run(GTK_DIALOG(dlg));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (result == 1) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</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="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; gtk_widget_destroy(dlg);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; g_object_unref(dlgbuilder);</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"> 314</span>&#160;}</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor">#endif</span></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;</div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66"> 318</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="l00319"></a><span class="lineno"> 319</span>&#160; gboolean path_currently_selected, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; guint context_id;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; gchar buf[1000];</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (path_currently_selected)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> TRUE;</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; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(model, &amp;iter, path))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> TRUE;</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; <a class="code" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a>();</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; gtk_tree_model_get(model, &amp;iter,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</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="l00336"></a><span class="lineno"> 336</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="l00337"></a><span class="lineno"> 337</span>&#160; -1);</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; 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="l00340"></a><span class="lineno"> 340</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="l00341"></a><span class="lineno"> 341</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="l00342"></a><span class="lineno"> 342</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="l00343"></a><span class="lineno"> 343</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="l00344"></a><span class="lineno"> 344</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</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="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; <span class="keywordflow">return</span> TRUE;</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"><a class="line" href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6"> 351</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="l00352"></a><span class="lineno"> 352</span>&#160;{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; GtkListStore *store;</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; store = GTK_LIST_STORE(user_data);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; gchar *datetime;</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; datetime = <a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(remminafile);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; gtk_list_store_set(store, &amp;iter,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</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="l00364"></a><span class="lineno"> 364</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="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</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="l00368"></a><span class="lineno"> 368</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="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, datetime,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</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="l00371"></a><span class="lineno"> 371</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="l00372"></a><span class="lineno"> 372</span>&#160; -1);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; g_free(datetime);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5"> 376</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="l00377"></a><span class="lineno"> 377</span>&#160;{</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; GtkTreeIter *iter;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *data;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; GNode *child;</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; iter = NULL;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (node-&gt;data) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; data = (<a class="code" href="remmina__file__manager_8h.html#a0155f52ba9a28e2aa0ea5d831f5d2c90">RemminaGroupData</a> *)node-&gt;data;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; iter = g_new0(GtkTreeIter, 1);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; gtk_tree_store_append(store, iter, parent);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; gtk_tree_store_set(store, iter,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</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="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, data-&gt;name,</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, data-&gt;group,</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, data-&gt;datetime,</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a>, NULL,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, data-&gt;labels,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; -1);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</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="l00398"></a><span class="lineno"> 398</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="l00399"></a><span class="lineno"> 399</span>&#160; g_free(iter);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296"> 403</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="l00404"></a><span class="lineno"> 404</span>&#160;{</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; GNode *root;</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; root = <a class="code" href="remmina__file__manager_8c.html#a6593a3f297f420f012405fa582819857">remmina_file_manager_get_group_tree</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</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="l00410"></a><span class="lineno"> 410</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="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__main_8c.html#a74cb130b886c2b905f651e777644a08c"> 413</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="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; GtkTreeModel *tree;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; gboolean ret;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; gchar *group, *filename;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; GtkTreeIter child;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; GtkTreePath *path;</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; 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="l00423"></a><span class="lineno"> 423</span>&#160; ret = TRUE;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</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="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span> (filename == NULL) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</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="l00428"></a><span class="lineno"> 428</span>&#160; path = gtk_tree_model_get_path(tree, iter);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</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="l00430"></a><span class="lineno"> 430</span>&#160; gtk_tree_path_free(path);</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; <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &amp;child, iter))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</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="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; g_free(group);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; g_free(filename);</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; ret = gtk_tree_model_iter_next(tree, iter);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</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"><a class="line" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e"> 442</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="l00443"></a><span class="lineno"> 443</span>&#160;{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</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="l00448"></a><span class="lineno"> 448</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="l00449"></a><span class="lineno"> 449</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497"> 451</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="l00452"></a><span class="lineno"> 452</span>&#160;{</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; gboolean ret, match;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; gchar *group, *filename;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; GtkTreeIter child;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; match = FALSE;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; ret = TRUE;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">while</span> (ret) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</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="l00462"></a><span class="lineno"> 462</span>&#160; match = (filename == NULL &amp;&amp; g_strcmp0(group, match_group) == 0);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; g_free(group);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; g_free(filename);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (match)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (gtk_tree_model_iter_children(tree, &amp;child, iter)) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</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="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (match) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; memcpy(iter, &amp;child, <span class="keyword">sizeof</span>(GtkTreeIter));</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; ret = gtk_tree_model_iter_next(tree, iter);</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">return</span> match;</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;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ae32574ebe06b1a24f135af9379e663b4"> 479</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="l00480"></a><span class="lineno"> 480</span>&#160;{</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; GtkTreeIter iter, child;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; GtkTreeStore *store;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; gboolean found;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; gchar *datetime = NULL;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; store = GTK_TREE_STORE(user_data);</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; found = FALSE;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</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="l00491"></a><span class="lineno"> 491</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="l00492"></a><span class="lineno"> 492</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="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; datetime = <a class="code" href="remmina__file_8c.html#a96abbfdc183d1e82fdffd6445d611ffe">remmina_file_get_datetime</a>(remminafile);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;The date is %s&quot;, datetime);</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; gtk_tree_store_append(store, &amp;child, (found ? &amp;iter : NULL));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; gtk_tree_store_set(store, &amp;child,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</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="l00499"></a><span class="lineno"> 499</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="l00500"></a><span class="lineno"> 500</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="l00501"></a><span class="lineno"> 501</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="l00502"></a><span class="lineno"> 502</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="l00503"></a><span class="lineno"> 503</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="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, datetime,</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</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="l00506"></a><span class="lineno"> 506</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="l00507"></a><span class="lineno"> 507</span>&#160; -1);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; g_free(datetime);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#a71fbe206a9c2abb8f348ee598d7751b7"> 511</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="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; gint columnid;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; GtkSortType order;</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; gtk_tree_sortable_get_sort_column_id(sortable, &amp;columnid, &amp;order);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</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="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#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a> = order;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800"> 523</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="l00524"></a><span class="lineno"> 524</span>&#160;{</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; gchar *text;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; gchar *protocol, *name, *labels, *group, *server, *plugin, *date, *s;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; gboolean result = TRUE;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</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="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (text &amp;&amp; text[0]) {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; gtk_tree_model_get(model, iter,</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a>, &amp;protocol,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a>, &amp;name,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a>, &amp;group,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a>, &amp;server,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a>, &amp;plugin,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a6e22c76fbdeaa8f724eb996db2d528bb">DATE_COLUMN</a>, &amp;date,</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a>, &amp;labels,</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; -1);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</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="l00542"></a><span class="lineno"> 542</span>&#160; s = g_ascii_strdown(name ? name : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; g_free(name);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; name = s;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; s = g_ascii_strdown(group ? group : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; g_free(group);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; group = s;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; s = g_ascii_strdown(server ? server : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; g_free(server);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; server = s;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; s = g_ascii_strdown(plugin ? plugin : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; g_free(plugin);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; plugin = s;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; s = g_ascii_strdown(date ? date : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; g_free(date);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; date = s;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; result = (strstr(name, text) || strstr(group, text) || strstr(server, text) || strstr(plugin, text) || strstr(date, text));</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; <span class="comment">// Filter by labels</span></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"> 561</span>&#160; s = g_ascii_strdown(labels ? labels : <span class="stringliteral">&quot;&quot;</span>, -1);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; g_free(labels);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; labels = s;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (strlen(labels) &gt; 0) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; gboolean labels_result = TRUE;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gchar **labels_array = g_strsplit(labels, <span class="stringliteral">&quot;,&quot;</span>, -1);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; gchar **text_array = g_strsplit(text, <span class="stringliteral">&quot;,&quot;</span>, -1);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</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="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">if</span> (0 == strlen(text_array[t])) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</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; gboolean text_result = FALSE;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</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="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span> (0 == strlen(labels_array[l])) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">continue</span>;</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;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; text_result = (text_result || strstr(labels_array[l], text_array[t]));</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; <span class="keywordflow">if</span> (text_result) {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">break</span>;</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; }</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; labels_result = (labels_result &amp;&amp; text_result);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (!labels_result) {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">break</span>;</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"> 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; result = (result || labels_result);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; g_strfreev(labels_array);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; g_strfreev(text_array);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</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; g_free(protocol);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; g_free(name);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; g_free(labels);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; g_free(group);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; g_free(server);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; g_free(plugin);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; g_free(date);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; g_free(text);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> result;</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"><a class="line" href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355"> 614</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="l00615"></a><span class="lineno"> 615</span>&#160;{</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; GtkTreePath *path;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; gchar *item_filename;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; gboolean cmp;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</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="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</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="l00627"></a><span class="lineno"> 627</span>&#160; cmp = g_strcmp0(item_filename, filename);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; g_free(item_filename);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</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="l00631"></a><span class="lineno"> 631</span>&#160; &amp;iter);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</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="l00633"></a><span class="lineno"> 633</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="l00634"></a><span class="lineno"> 634</span>&#160; gtk_tree_path_free(path);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</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="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span>;</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;}</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"><a class="line" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7"> 642</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="l00643"></a><span class="lineno"> 643</span>&#160;{</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; gint items_count;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; gchar buf[200];</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; guint context_id;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; gint view_file_mode;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; gboolean always_show_notes;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordtype">char</span> *save_selected_filename;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; GtkTreeModel *newmodel;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keyword">const</span> gchar *neticon;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> gchar *connection_tooltip;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</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="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a>();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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="l00659"></a><span class="lineno"> 659</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="l00660"></a><span class="lineno"> 660</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="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">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="l00663"></a><span class="lineno"> 663</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="l00664"></a><span class="lineno"> 664</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="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</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="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</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="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">switch</span> (view_file_mode) {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</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="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">/* Create new GtkTreeStore model */</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</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="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">/* Hide the Group column in the tree view mode */</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</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="l00678"></a><span class="lineno"> 678</span>&#160; <span class="comment">/* Load groups first */</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</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="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</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="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">break</span>;</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; <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="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">/* Create new GtkListStore model */</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</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="l00688"></a><span class="lineno"> 688</span>&#160; <span class="comment">/* Show the Group column in the list view mode */</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</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="l00690"></a><span class="lineno"> 690</span>&#160; <span class="comment">/* Load files list */</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</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="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">break</span>;</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;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="comment">/* Set note column visibility*/</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</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="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">if</span> (!always_show_notes){</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</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="l00699"></a><span class="lineno"> 699</span>&#160; }</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; <span class="comment">/* Unset old model */</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</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="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">/* Destroy the old model and save the new one */</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</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="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</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="l00708"></a><span class="lineno"> 708</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="l00709"></a><span class="lineno"> 709</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="l00710"></a><span class="lineno"> 710</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="l00711"></a><span class="lineno"> 711</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="l00712"></a><span class="lineno"> 712</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="l00713"></a><span class="lineno"> 713</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="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#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</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="l00716"></a><span class="lineno"> 716</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="l00717"></a><span class="lineno"> 717</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="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e">remmina_main_expand_group</a>();</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (save_selected_filename) {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</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="l00722"></a><span class="lineno"> 722</span>&#160; g_free(save_selected_filename);</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; 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="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</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="l00727"></a><span class="lineno"> 727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(label),</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; _(<span class="stringliteral">&quot;The latest successful connection attempt, or a pre-computed date&quot;</span>));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="comment">/* Show in the status bar the total number of connections found */</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</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="l00732"></a><span class="lineno"> 732</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="l00733"></a><span class="lineno"> 733</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="l00734"></a><span class="lineno"> 734</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="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</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="l00737"></a><span class="lineno"> 737</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="l00738"></a><span class="lineno"> 738</span>&#160; neticon = g_strdup(<span class="stringliteral">&quot;network-transmit-receive-symbolic&quot;</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; connection_tooltip = g_strdup(_(<span class="stringliteral">&quot;Network status: fully online&quot;</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; neticon = g_strdup(<span class="stringliteral">&quot;network-offline-symbolic&quot;</span>);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; connection_tooltip = g_strdup(_(<span class="stringliteral">&quot;Network status: offline&quot;</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</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; <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="l00746"></a><span class="lineno"> 746</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="l00747"></a><span class="lineno"> 747</span>&#160; GIcon *icon = g_themed_icon_new (neticon);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</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="l00749"></a><span class="lineno"> 749</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="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; g_object_unref (icon);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</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="l00754"></a><span class="lineno"> 754</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="l00755"></a><span class="lineno"> 755</span>&#160;</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"><a class="line" href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320"> 758</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="l00759"></a><span class="lineno"> 759</span>&#160;{</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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"><a class="line" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d"> 764</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="l00765"></a><span class="lineno"> 765</span>&#160;{</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; TRACE_CALL(__func__);</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; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</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="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</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="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</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="l00779"></a><span class="lineno"> 779</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="l00780"></a><span class="lineno"> 780</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="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</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="l00783"></a><span class="lineno"> 783</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="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="remmina__file_8c.html#a3d19095f74e9b7c92d74f11bd5a39a8c">remmina_file_touch</a>(remminafile);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</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="l00788"></a><span class="lineno"> 788</span>&#160;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</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"><a class="line" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1"> 792</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="l00793"></a><span class="lineno"> 793</span>&#160;{</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</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="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</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; <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="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"><a class="line" href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd"> 801</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="l00802"></a><span class="lineno"> 802</span>&#160;{</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; TRACE_CALL(__func__);</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="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229"> 810</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="l00811"></a><span class="lineno"> 811</span>&#160;{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</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; <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">const</span> gchar *domain;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keyword">const</span> gchar *group;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keyword">const</span> gchar *gatewayusername;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">const</span> gchar *gatewaydomain;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; username = domain = group = gatewayusername = gatewaydomain = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</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="l00826"></a><span class="lineno"> 826</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="l00827"></a><span class="lineno"> 827</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="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</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="l00831"></a><span class="lineno"> 831</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="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (remminafile != NULL) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</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="l00834"></a><span class="lineno"> 834</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="l00835"></a><span class="lineno"> 835</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="l00836"></a><span class="lineno"> 836</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="l00837"></a><span class="lineno"> 837</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="l00838"></a><span class="lineno"> 838</span>&#160; }</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; <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="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (remminafile != NULL)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</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;</div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af"> 847</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="l00848"></a><span class="lineno"> 848</span>&#160;{</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</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="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</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="l00855"></a><span class="lineno"> 855</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="l00856"></a><span class="lineno"> 856</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="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">return</span>;</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; widget = <a class="code" href="remmina__file__editor_8c.html#aa4e8657ca722e4cce3f3c42c0cfec51e">remmina_file_editor_new</a>();</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</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="l00861"></a><span class="lineno"> 861</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="l00862"></a><span class="lineno"> 862</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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;</div><div class="line"><a name="l00866"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c"> 866</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="l00867"></a><span class="lineno"> 867</span>&#160;{</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span> (event-&gt;keyval == GDK_KEY_Escape) {</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</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="l00871"></a><span class="lineno"> 871</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="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c"> 877</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="l00878"></a><span class="lineno"> 878</span>&#160;{</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">if</span> (gtk_tree_view_row_expanded(tree, path))</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; gtk_tree_view_collapse_row(tree, path);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; gtk_tree_view_expand_row(tree, path, FALSE);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">return</span> TRUE;</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"><a class="line" href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766"> 887</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="l00888"></a><span class="lineno"> 888</span>&#160;{</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</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="l00890"></a><span class="lineno"> 890</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="l00891"></a><span class="lineno"> 891</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="l00892"></a><span class="lineno"> 892</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="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</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="l00898"></a><span class="lineno"> 898</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="l00899"></a><span class="lineno"> 899</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="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</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"><a class="line" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1"> 906</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="l00907"></a><span class="lineno"> 907</span>&#160;{</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; GtkWidget *widget;</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; <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="l00912"></a><span class="lineno"> 912</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="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</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="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</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="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> (((<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="l00921"></a><span class="lineno"> 921</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="l00922"></a><span class="lineno"> 922</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="l00923"></a><span class="lineno"> 923</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="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</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; 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="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</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="l00934"></a><span class="lineno"> 934</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="l00935"></a><span class="lineno"> 935</span>&#160; gtk_widget_show(widget);</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="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</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="l00939"></a><span class="lineno"> 939</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="l00940"></a><span class="lineno"> 940</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc"> 942</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="l00943"></a><span class="lineno"> 943</span>&#160;{</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</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="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">return</span>;</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; <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="l00951"></a><span class="lineno"> 951</span>&#160;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</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="l00953"></a><span class="lineno"> 953</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="l00954"></a><span class="lineno"> 954</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="l00955"></a><span class="lineno"> 955</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="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; remminafile = NULL;</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;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</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="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">if</span> (widget) {</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</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="l00966"></a><span class="lineno"> 966</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; }</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="comment">/* Select the file previously selected */</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</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="l00970"></a><span class="lineno"> 970</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="l00971"></a><span class="lineno"> 971</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093"> 973</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="l00974"></a><span class="lineno"> 974</span>&#160;{</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; GtkWidget *dialog;</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="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="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</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="l00982"></a><span class="lineno"> 982</span>&#160;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</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="l00984"></a><span class="lineno"> 984</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="l00985"></a><span class="lineno"> 985</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="l00986"></a><span class="lineno"> 986</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="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; remminafile = NULL;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; }</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; 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="l00995"></a><span class="lineno"> 995</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="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordflow">if</span> (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_YES) {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</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="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="remmina__file_8c.html#a55f66f2bb81bf427d6837e1adb7fe1d4">remmina_file_delete</a>(delfilename);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; g_free(delfilename), delfilename = NULL;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="remmina__icon_8c.html#af80ed314f91d653237249d839c7fc3b2">remmina_icon_populate_menu</a>();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a>();</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"><a class="line" href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"> 1007</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="l01008"></a><span class="lineno"> 1008</span>&#160;{</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; GVariant *v = g_variant_new(<span class="stringliteral">&quot;i&quot;</span>, 0);</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; <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="l01013"></a><span class="lineno"> 1013</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92"> 1015</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="l01016"></a><span class="lineno"> 1016</span>&#160;{</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening the preferences&quot;</span>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; gint32 tab_num;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">if</span> (param) {</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</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="l01025"></a><span class="lineno"> 1025</span>&#160; tab_num = g_variant_get_int32(param);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</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="l01027"></a><span class="lineno"> 1027</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; tab_num = 0;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</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; <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="l01032"></a><span class="lineno"> 1032</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="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</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="l01036"></a><span class="lineno"> 1036</span>&#160;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; gtk_widget_show_all(widget);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</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="l01041"></a><span class="lineno"> 1041</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1"> 1043</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="l01044"></a><span class="lineno"> 1044</span>&#160;{</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; g_autoptr(GError) error = NULL;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; GDesktopAppInfo *desktop_info;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; GAppInfo *info = NULL;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</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="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; desktop_info = g_desktop_app_info_new(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">if</span> (!desktop_info)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; info = G_APP_INFO(desktop_info);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</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="l01059"></a><span class="lineno"> 1059</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="l01060"></a><span class="lineno"> 1060</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="l01061"></a><span class="lineno"> 1061</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="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</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="l01064"></a><span class="lineno"> 1064</span>&#160; g_app_info_get_name(info),</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <a class="code" href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a>[i]);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; }</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"><a class="line" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a"> 1069</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="l01070"></a><span class="lineno"> 1070</span>&#160;{</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="comment">// Called by quit signal in remmina_main.glade</span></div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; g_debug(<span class="stringliteral">&quot;Quit intercept&quot;</span>);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</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="l01075"></a><span class="lineno"> 1075</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#a3d60de4c121cae0c82e60b13873073db"> 1077</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="l01078"></a><span class="lineno"> 1078</span>&#160;{</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</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="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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;}</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"><a class="line" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20"> 1087</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="l01088"></a><span class="lineno"> 1088</span>&#160;{</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; GtkWidget *dlg;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; GSList *element;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; gchar *path;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; GString *err;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = NULL;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; gboolean imported;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; err = g_string_new(NULL);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; imported = FALSE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">for</span> (element = files; element; element = element-&gt;next) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; path = (gchar *)element-&gt;data;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</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="l01103"></a><span class="lineno"> 1103</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="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="code" href="remmina__file_8c.html#ac952f8ddb715314f11cef1ccc513fb7e">remmina_file_generate_filename</a>(remminafile);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; imported = TRUE;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; g_string_append(err, path);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; g_string_append_c(err, <span class="charliteral">&#39;\n&#39;</span>);</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; <span class="keywordflow">if</span> (remminafile) {</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; remminafile = NULL;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; g_free(path);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; g_slist_free(files);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keywordflow">if</span> (err-&gt;len &gt; 0) {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</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="l01121"></a><span class="lineno"> 1121</span>&#160; _(<span class="stringliteral">&quot;Unable to import:\n%s&quot;</span>), err-&gt;str);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</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="l01123"></a><span class="lineno"> 1123</span>&#160; gtk_widget_show(dlg);</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; g_string_free(err, TRUE);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">if</span> (imported)</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</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"><a class="line" href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d"> 1130</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="l01131"></a><span class="lineno"> 1131</span>&#160;{</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; GSList *files;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">if</span> (response_id == GTK_RESPONSE_ACCEPT) {</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="code" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a>(files);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; }</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c"> 1142</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="l01143"></a><span class="lineno"> 1143</span>&#160;{</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</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="l01148"></a><span class="lineno"> 1148</span>&#160; GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</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="l01151"></a><span class="lineno"> 1151</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d"> 1154</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="l01155"></a><span class="lineno"> 1155</span>&#160;{</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <a class="code" href="struct___remmina_file_plugin.html">RemminaFilePlugin</a> *plugin;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</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="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</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="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">if</span> (remminafile == NULL)</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</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="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">if</span> (plugin) {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</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="l01170"></a><span class="lineno"> 1170</span>&#160; GTK_FILE_CHOOSER_ACTION_SAVE, _(<span class="stringliteral">&quot;_Save&quot;</span>), GTK_RESPONSE_ACCEPT, NULL);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">if</span> (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</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="l01173"></a><span class="lineno"> 1173</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</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="l01176"></a><span class="lineno"> 1176</span>&#160; _(<span class="stringliteral">&quot;This protocol does not support exporting.&quot;</span>));</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</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="l01178"></a><span class="lineno"> 1178</span>&#160; gtk_widget_show(dialog);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <a class="code" href="remmina__file_8c.html#abd2f06bf0a5ddcf7156e5ef7d0c8d4d7">remmina_file_free</a>(remminafile);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc"> 1183</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="l01184"></a><span class="lineno"> 1184</span>&#160;{</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</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="l01187"></a><span class="lineno"> 1187</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b"> 1189</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="l01190"></a><span class="lineno"> 1190</span>&#160;{</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</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="l01197"></a><span class="lineno"> 1197</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="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</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="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</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="l01203"></a><span class="lineno"> 1203</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a"> 1205</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="l01206"></a><span class="lineno"> 1206</span>&#160;{</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</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="l01209"></a><span class="lineno"> 1209</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116"> 1211</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="l01212"></a><span class="lineno"> 1212</span>&#160;{</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</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="l01215"></a><span class="lineno"> 1215</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32"> 1217</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="l01218"></a><span class="lineno"> 1218</span>&#160;{</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</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="l01221"></a><span class="lineno"> 1221</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277"> 1223</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="l01224"></a><span class="lineno"> 1224</span>&#160;{</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</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="l01227"></a><span class="lineno"> 1227</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc"> 1229</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="l01230"></a><span class="lineno"> 1230</span>&#160;{</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <a class="code" href="remmina__log_8c.html#a72cf53183f3ef89c4208fdccb629003d">remmina_log_start</a>();</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc"> 1235</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="l01236"></a><span class="lineno"> 1236</span>&#160;{</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</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="l01239"></a><span class="lineno"> 1239</span>&#160;};</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"><a class="line" href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6"> 1241</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="l01242"></a><span class="lineno"> 1242</span>&#160;{</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (s == NULL)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">while</span> (*s != 0) {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</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="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; s++;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">return</span> TRUE;</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"> 1252</span>&#160;</div><div class="line"><a name="l01253"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a802458852abacebfb16f1f4295806a01"> 1253</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="l01254"></a><span class="lineno"> 1254</span>&#160;{</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; gchar *server;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; gchar *server_trimmed;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; gchar *qcp;</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;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="comment">/* Save quick connect protocol if different from the previous one */</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</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="l01264"></a><span class="lineno"> 1264</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="l01265"></a><span class="lineno"> 1265</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="l01266"></a><span class="lineno"> 1266</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="l01267"></a><span class="lineno"> 1267</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; remminafile = <a class="code" href="remmina__file_8c.html#a5e421ba636d34e21bba5ece463e98892">remmina_file_new</a>();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</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="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">if</span> (g_hostname_to_ascii(server) == NULL)</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="comment">/* If server contain /, e.g. vnc://, it won&#39;t connect</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="comment"> * We could search for an array of invalid characters, but</span></div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</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="l01277"></a><span class="lineno"> 1277</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">if</span> (g_strrstr(server, <span class="stringliteral">&quot;/&quot;</span>) != NULL)</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="comment">//if (g_str_has_suffix (server, &quot;/&quot;))</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">//return FALSE;</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</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="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="comment">/* check if server is an IP address and trim whitespace if so */</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; server_trimmed = g_strdup(server);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; g_strstrip(server_trimmed);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; gchar **strings = g_strsplit(server_trimmed, <span class="stringliteral">&quot;:&quot;</span>, 2);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordflow">if</span> (strings[0] != NULL)</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (g_hostname_is_ip_address(strings[0]))</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; g_stpcpy(server, server_trimmed);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</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="l01295"></a><span class="lineno"> 1295</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="l01296"></a><span class="lineno"> 1296</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="l01297"></a><span class="lineno"> 1297</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="l01298"></a><span class="lineno"> 1298</span>&#160; g_free(server);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; g_free(server_trimmed);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; g_free(qcp);</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <a class="code" href="rcw_8c.html#a1b7a771392e15e527005305e71cc2546">rcw_open_from_file</a>(remminafile);</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;}</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d"> 1307</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="l01308"></a><span class="lineno"> 1308</span>&#160;{</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</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="l01311"></a><span class="lineno"> 1311</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="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;}</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="comment">/* Select all the text inside the quick search box if there is anything */</span></div><div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a6c69b2fa6a56869c54f58d7ebae89427"> 1316</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="l01317"></a><span class="lineno"> 1317</span>&#160;{</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</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="l01319"></a><span class="lineno"> 1319</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="l01320"></a><span class="lineno"> 1320</span>&#160;}</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a"> 1322</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="l01323"></a><span class="lineno"> 1323</span>&#160;{</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</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="l01326"></a><span class="lineno"> 1326</span>&#160;}</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;</div><div class="line"><a name="l01328"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a"> 1328</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="l01329"></a><span class="lineno"> 1329</span>&#160;{</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Search toggle triggered&quot;</span>);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</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="l01333"></a><span class="lineno"> 1333</span>&#160;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</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="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">if</span> (toggle_status) {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Search toggle is active&quot;</span>);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</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="l01338"></a><span class="lineno"> 1338</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</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="l01340"></a><span class="lineno"> 1340</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="l01341"></a><span class="lineno"> 1341</span>&#160; }</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;}</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;</div><div class="line"><a name="l01344"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf"> 1344</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="l01345"></a><span class="lineno"> 1345</span>&#160;{</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</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="l01348"></a><span class="lineno"> 1348</span>&#160;}</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8"> 1350</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="l01351"></a><span class="lineno"> 1351</span>&#160;{</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</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="l01354"></a><span class="lineno"> 1354</span>&#160;}</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment">/* Handle double click on a row in the connections list */</span></div><div class="line"><a name="l01357"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10"> 1357</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="l01358"></a><span class="lineno"> 1358</span>&#160;{</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="comment">/* If a connection was selected then execute the default action */</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</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="l01362"></a><span class="lineno"> 1362</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="l01363"></a><span class="lineno"> 1363</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="l01364"></a><span class="lineno"> 1364</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="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</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="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</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="l01369"></a><span class="lineno"> 1369</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; }</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;}</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="comment">/* Show the popup menu by the right button mouse click */</span></div><div class="line"><a name="l01375"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9"> 1375</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="l01376"></a><span class="lineno"> 1376</span>&#160;{</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">if</span> (event-&gt;button == MOUSE_BUTTON_RIGHT) {</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</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="l01380"></a><span class="lineno"> 1380</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</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="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</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="l01384"></a><span class="lineno"> 1384</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; }</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment">/* Show the popup menu by the menu key */</span></div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a31102f8ca7440a22c1514bca17933193"> 1390</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="l01391"></a><span class="lineno"> 1391</span>&#160;{</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; <span class="keywordflow">if</span> (event-&gt;keyval == GDK_KEY_Menu) {</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="preprocessor">#if GTK_CHECK_VERSION(3, 22, 0)</span></div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</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="l01396"></a><span class="lineno"> 1396</span>&#160; GDK_GRAVITY_CENTER, GDK_GRAVITY_CENTER,</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; (GdkEvent *)event);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</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="l01400"></a><span class="lineno"> 1400</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; }</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;}</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;</div><div class="line"><a name="l01405"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f"> 1405</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="l01406"></a><span class="lineno"> 1406</span>&#160;{</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">if</span> (icon_pos == GTK_ENTRY_ICON_SECONDARY)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; gtk_entry_set_text(entry, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;}</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657"> 1412</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="l01413"></a><span class="lineno"> 1413</span>&#160;{</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</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="l01416"></a><span class="lineno"> 1416</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="l01417"></a><span class="lineno"> 1417</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="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">/* File view mode changed, put it to override and reload list */</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</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="l01420"></a><span class="lineno"> 1420</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</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="l01424"></a><span class="lineno"> 1424</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="l01425"></a><span class="lineno"> 1425</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="l01426"></a><span class="lineno"> 1426</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; }</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</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="l01430"></a><span class="lineno"> 1430</span>&#160;}</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;</div><div class="line"><a name="l01432"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#adf073486149762f547504020484bff70"> 1432</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="l01433"></a><span class="lineno"> 1433</span>&#160; GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; gchar **uris;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; GSList *files = NULL;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; gint i;</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; uris = g_uri_list_extract_uris((<span class="keyword">const</span> gchar *)gtk_selection_data_get_data(data));</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordflow">for</span> (i = 0; uris[i]; i++) {</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</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="l01443"></a><span class="lineno"> 1443</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; files = g_slist_append(files, g_strdup(uris[i] + 7));</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; g_strfreev(uris);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <a class="code" href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a>(files);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;}</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="comment">/* Add a new menuitem to the Tools menu */</span></div><div class="line"><a name="l01451"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f"> 1451</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="l01452"></a><span class="lineno"> 1452</span>&#160;{</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</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="l01455"></a><span class="lineno"> 1455</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="l01456"></a><span class="lineno"> 1456</span>&#160;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; gtk_widget_show(menuitem);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</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="l01459"></a><span class="lineno"> 1459</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="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;}</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79"> 1463</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="l01464"></a><span class="lineno"> 1464</span>&#160;{</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment">/* Remmina main window initialization */</span></div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300"> 1470</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="l01471"></a><span class="lineno"> 1471</span>&#160;{</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordtype">int</span> i, qcp_idx, qcp_actidx;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; GtkSettings *settings;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initializing the Remmina main window&quot;</span>);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; settings = gtk_settings_get_default();</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</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="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Initializing monitor&quot;</span>);</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</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="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</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="l01486"></a><span class="lineno"> 1486</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="l01487"></a><span class="lineno"> 1487</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="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</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="l01490"></a><span class="lineno"> 1490</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="l01491"></a><span class="lineno"> 1491</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="l01492"></a><span class="lineno"> 1492</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="l01493"></a><span class="lineno"> 1493</span>&#160; gtk_window_maximize(remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="comment">/* Honor global preferences Search Bar visibility */</span></div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</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="l01497"></a><span class="lineno"> 1497</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="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</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="l01500"></a><span class="lineno"> 1500</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="l01501"></a><span class="lineno"> 1501</span>&#160;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="comment">/* Add available quick connect protocols to remminamain-&gt;combo_quick_connect_protocol */</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; qcp_idx = qcp_actidx = 0;</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</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="l01505"></a><span class="lineno"> 1505</span>&#160; name = <a class="code" href="remmina__main_8c.html#aace9ecdd0b74d392ad6ed541bd605c1c">quick_connect_plugin_list</a>[i];</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</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="l01507"></a><span class="lineno"> 1507</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="l01508"></a><span class="lineno"> 1508</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="l01509"></a><span class="lineno"> 1509</span>&#160; qcp_actidx = qcp_idx;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; qcp_idx++;</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</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; 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="l01514"></a><span class="lineno"> 1514</span>&#160;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Connect the group accelerators to the GtkWindow */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="comment">//gtk_window_add_accel_group(remminamain-&gt;window, remminamain-&gt;accelgroup_shortcuts);</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="comment">/* Set the Quick Connection */</span></div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</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="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="comment">/* Set the TreeView for the files list */</span></div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; gtk_tree_selection_set_select_function(</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</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="l01522"></a><span class="lineno"> 1522</span>&#160; <a class="code" href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66">remmina_main_selection_func</a>, NULL, NULL);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</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="l01525"></a><span class="lineno"> 1525</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="l01526"></a><span class="lineno"> 1526</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="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="comment">/* Load the files list */</span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="comment">/* Drag-n-drop support */</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</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="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="comment">/* Finish initialization */</span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</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="l01535"></a><span class="lineno"> 1535</span>&#160;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</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="l01537"></a><span class="lineno"> 1537</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="l01538"></a><span class="lineno"> 1538</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="l01539"></a><span class="lineno"> 1539</span>&#160;}</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">/* Signal handler for &quot;show&quot; on remminamain-&gt;window */</span></div><div class="line"><a name="l01542"></a><span class="lineno"><a class="line" href="remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2"> 1542</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="l01543"></a><span class="lineno"> 1543</span>&#160;{</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5">remmina_main_show_snap_welcome</a>();</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;}</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="comment">/* RemminaMain instance */</span></div><div class="line"><a name="l01551"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7"> 1551</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="l01552"></a><span class="lineno"> 1552</span>&#160;{</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; GSimpleActionGroup *actions;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; remminamain = g_new0(<a class="code" href="struct___remmina_main.html">RemminaMain</a>, 1);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</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="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="comment">/* Assign UI widgets to the private members */</span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</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="l01561"></a><span class="lineno"> 1561</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="l01562"></a><span class="lineno"> 1562</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="l01563"></a><span class="lineno"> 1563</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="l01564"></a><span class="lineno"> 1564</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="l01565"></a><span class="lineno"> 1565</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="l01566"></a><span class="lineno"> 1566</span>&#160; }</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="comment">/* New Button */</span></div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</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="l01569"></a><span class="lineno"> 1569</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="l01570"></a><span class="lineno"> 1570</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="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="comment">/* Search bar */</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#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a> = GTK_TOGGLE_BUTTON(RM_GET_OBJECT(<span class="stringliteral">&quot;search_toggle&quot;</span>));</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</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="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="comment">/* view mode list/tree */</span></div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</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="l01576"></a><span class="lineno"> 1576</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="l01577"></a><span class="lineno"> 1577</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="l01578"></a><span class="lineno"> 1578</span>&#160;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</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="l01581"></a><span class="lineno"> 1581</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="l01582"></a><span class="lineno"> 1582</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="l01583"></a><span class="lineno"> 1583</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="l01584"></a><span class="lineno"> 1584</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="l01585"></a><span class="lineno"> 1585</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="l01586"></a><span class="lineno"> 1586</span>&#160; }</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="comment">/* View mode radios */</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</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="l01589"></a><span class="lineno"> 1589</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="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="comment">/* Quick connect objects */</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#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="l01592"></a><span class="lineno"> 1592</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="l01593"></a><span class="lineno"> 1593</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="l01594"></a><span class="lineno"> 1594</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="l01595"></a><span class="lineno"> 1595</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="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</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="l01598"></a><span class="lineno"> 1598</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="l01599"></a><span class="lineno"> 1599</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="l01600"></a><span class="lineno"> 1600</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="l01601"></a><span class="lineno"> 1601</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="l01602"></a><span class="lineno"> 1602</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="l01603"></a><span class="lineno"> 1603</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="l01604"></a><span class="lineno"> 1604</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="l01605"></a><span class="lineno"> 1605</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="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="comment">/* signals */</span></div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</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="l01608"></a><span class="lineno"> 1608</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="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; actions = g_simple_action_group_new();</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</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="l01612"></a><span class="lineno"> 1612</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="l01613"></a><span class="lineno"> 1613</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="l01614"></a><span class="lineno"> 1614</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="l01615"></a><span class="lineno"> 1615</span>&#160; g_object_unref(actions);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; accel_group = gtk_accel_group_new();</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</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="l01619"></a><span class="lineno"> 1619</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</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="l01621"></a><span class="lineno"> 1621</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="l01622"></a><span class="lineno"> 1622</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_P, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</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="l01624"></a><span class="lineno"> 1624</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_F, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</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="l01626"></a><span class="lineno"> 1626</span>&#160;</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</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="l01629"></a><span class="lineno"> 1629</span>&#160; <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <a class="code" href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300">remmina_main_init</a>();</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</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="l01632"></a><span class="lineno"> 1632</span>&#160;}</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;</div><div class="line"><a name="l01634"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc"> 1634</a></span>&#160;GtkWindow *<a class="code" href="remmina__main_8c.html#a7740488de65c0e642895cc9dfba07b6e">remmina_main_get_window</a>()</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;{</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</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="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</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="l01641"></a><span class="lineno"> 1641</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</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="l01643"></a><span class="lineno"> 1643</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="l01644"></a><span class="lineno"> 1644</span>&#160;}</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#a5ae0372dafe41f96a09097c07d1b270a"> 1646</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="l01647"></a><span class="lineno"> 1647</span>&#160;{</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">if</span> (!remminamain)</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <a class="code" href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a>();</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;}</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;</div><div class="line"><a name="l01653"></a><span class="lineno"><a class="line" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589"> 1653</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="l01654"></a><span class="lineno"> 1654</span>&#160; GtkWidget *dialog;</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; <span class="keywordflow">if</span> (remminamain-&gt;<a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>) {</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</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="l01658"></a><span class="lineno"> 1658</span>&#160; gtk_dialog_run(GTK_DIALOG(dialog));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; gtk_widget_destroy(dialog);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; }</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;}</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"><a class="line" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7"> 1663</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="l01664"></a><span class="lineno"> 1664</span>&#160; GtkWidget *dialog;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</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="l01667"></a><span class="lineno"> 1667</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="l01668"></a><span class="lineno"> 1668</span>&#160; message, g_get_application_name());</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="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#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#l00070">remmina_plugin_manager.c:70</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="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#l00108">remmina_main.c:108</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#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>
@@ -98,22 +98,22 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<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#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="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#l00479">remmina_main.c:479</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>
-<div class="ttc" id="remmina__main_8c_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01206">remmina_main.c:1206</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8c.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01205">remmina_main.c:1205</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a0995d06fd3cad6098f0ecfaca9ed616f"><div class="ttname"><a href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">_RemminaMain::network_icon</a></div><div class="ttdeci">GtkWidget * network_icon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00080">remmina_main.h:80</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a054a55a2c39181609150cbb4d22413ef"><div class="ttname"><a href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">_RemminaPref::default_action</a></div><div class="ttdeci">gint default_action</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00140">remmina_pref.h:140</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab08aae433b625c3a84330630fe2bd2d5"><div class="ttname"><a href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5">remmina_main_show_snap_welcome</a></div><div class="ttdeci">static void remmina_main_show_snap_welcome()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00269">remmina_main.c:269</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>
+<div class="ttc" id="remmina__main_8c_html_ab08aae433b625c3a84330630fe2bd2d5"><div class="ttname"><a href="remmina__main_8c.html#ab08aae433b625c3a84330630fe2bd2d5">remmina_main_show_snap_welcome</a></div><div class="ttdeci">static void remmina_main_show_snap_welcome()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00268">remmina_main.c:268</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#l01634">remmina_main.c:1634</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a092aebd62ba9fe50c899e416361c1d00"><div class="ttname"><a href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">_RemminaMainPriv::selected_filename</a></div><div class="ttdeci">gchar * selected_filename</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00094">remmina_main.h:94</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_aec4c4540e9463a45b22a5c0b9108bc6f"><div class="ttname"><a href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">_RemminaMainPriv::file_model</a></div><div class="ttdeci">GtkTreeModel * file_model</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00088">remmina_main.h:88</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ad8744dc59ba8072ffdf557b6c94e9f40"><div class="ttname"><a href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a></div><div class="ttdeci">static void remmina_main_save_expanded_group(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00161">remmina_main.c:161</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ad8744dc59ba8072ffdf557b6c94e9f40"><div class="ttname"><a href="remmina__main_8c.html#ad8744dc59ba8072ffdf557b6c94e9f40">remmina_main_save_expanded_group</a></div><div class="ttdeci">static void remmina_main_save_expanded_group(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00160">remmina_main.c:160</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>
<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#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="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#l00764">remmina_main.c:764</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>
<div class="ttc" id="struct___remmina_main_html_a670425eaf7430854a172ee0f41c4e5e0"><div class="ttname"><a href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">_RemminaMain::menuitem_view_mode_tree</a></div><div class="ttdeci">GtkRadioMenuItem * menuitem_view_mode_tree</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00055">remmina_main.h:55</a></div></div>
@@ -124,79 +124,78 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="remmina__widget__pool_8c_html_ae3c9c9853eb5bedbfeadbfac1d495b95"><div class="ttname"><a href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a></div><div class="ttdeci">void remmina_widget_pool_register(GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00056">remmina_widget_pool.c:56</a></div></div>
<div class="ttc" id="struct___remmina_main_html"><div class="ttname"><a href="struct___remmina_main.html">_RemminaMain</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00047">remmina_main.h:47</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac31f888a39eec7ef6de922c7b53d044e"><div class="ttname"><a href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">_RemminaPref::last_quickconnect_protocol</a></div><div class="ttdeci">gchar * last_quickconnect_protocol</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00225">remmina_pref.h:225</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ace72fa8f7198020464623e7117a351a9"><div class="ttname"><a href="remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9">remmina_main_file_list_on_button_press</a></div><div class="ttdeci">gboolean remmina_main_file_list_on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01386">remmina_main.c:1386</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ace72fa8f7198020464623e7117a351a9"><div class="ttname"><a href="remmina__main_8c.html#ace72fa8f7198020464623e7117a351a9">remmina_main_file_list_on_button_press</a></div><div class="ttdeci">gboolean remmina_main_file_list_on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01375">remmina_main.c:1375</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a597178a88c755ebe0614897b7aa279b1"><div class="ttname"><a href="struct___remmina_file_plugin.html#a597178a88c755ebe0614897b7aa279b1">_RemminaFilePlugin::import_func</a></div><div class="ttdeci">RemminaFile *(* import_func)(struct _RemminaFilePlugin *instance, const gchar *from_file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00108">plugin.h:108</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="remmina__main_8c_html_ab0d22f0e3571eb80886acb0c68005800"><div class="ttname"><a href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800">remmina_main_filter_visible_func</a></div><div class="ttdeci">static gboolean remmina_main_filter_visible_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00524">remmina_main.c:524</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab0d22f0e3571eb80886acb0c68005800"><div class="ttname"><a href="remmina__main_8c.html#ab0d22f0e3571eb80886acb0c68005800">remmina_main_filter_visible_func</a></div><div class="ttdeci">static gboolean remmina_main_filter_visible_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00523">remmina_main.c:523</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__monitor_8c_html_acf79b91eb05694ec967d726bd0f85e50"><div class="ttname"><a href="remmina__monitor_8c.html#acf79b91eb05694ec967d726bd0f85e50">remmina_network_monitor_status</a></div><div class="ttdeci">gboolean remmina_network_monitor_status(RemminaMonitor *rm_monitor)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8c_source.html#l00181">remmina_monitor.c:181</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_afce14b101da527ada9b44a4503e91e07"><div class="ttname"><a href="remmina__plugin__manager_8c.html#afce14b101da527ada9b44a4503e91e07">remmina_plugin_manager_get_export_file_handler</a></div><div class="ttdeci">RemminaFilePlugin * remmina_plugin_manager_get_export_file_handler(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00589">remmina_plugin_manager.c:589</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__main_8c_html_a0b4ec1e78b79adaa180a385ac50c20d6"><div class="ttname"><a href="remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a></div><div class="ttdeci">void remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01242">remmina_main.c:1242</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_a06196f19abc15526514a5aa59a568798"><div class="ttname"><a href="remmina__file__manager_8c.html#a06196f19abc15526514a5aa59a568798">remmina_file_manager_free_group_tree</a></div><div class="ttdeci">void remmina_file_manager_free_group_tree(GNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00335">remmina_file_manager.c:335</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html"><div class="ttname"><a href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a859348bddc9069f06195915692b65076"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a859348bddc9069f06195915692b65076">remmina_plugin_manager_get_import_file_handler</a></div><div class="ttdeci">RemminaFilePlugin * remmina_plugin_manager_get_import_file_handler(const gchar *file)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00570">remmina_plugin_manager.c:570</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_af129aea3f5f3ec56b061187a81d43e4c"><div class="ttname"><a href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c">remmina_main_search_key_event</a></div><div class="ttdeci">static gboolean remmina_main_search_key_event(GtkWidget *search_entry, GdkEventKey *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00867">remmina_main.c:867</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01143">remmina_main.c:1143</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_af129aea3f5f3ec56b061187a81d43e4c"><div class="ttname"><a href="remmina__main_8c.html#af129aea3f5f3ec56b061187a81d43e4c">remmina_main_search_key_event</a></div><div class="ttdeci">static gboolean remmina_main_search_key_event(GtkWidget *search_entry, GdkEventKey *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00866">remmina_main.c:866</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8c.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01142">remmina_main.c:1142</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a"><div class="ttname"><a href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00058">remmina_pref.h:58</a></div></div>
<div class="ttc" id="remmina__monitor_8c_html_ac37c2579934e206d669c1af9b51f8ef1"><div class="ttname"><a href="remmina__monitor_8c.html#ac37c2579934e206d669c1af9b51f8ef1">remmina_network_monitor_new</a></div><div class="ttdeci">RemminaMonitor * remmina_network_monitor_new()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__monitor_8c_source.html#l00220">remmina_monitor.c:220</a></div></div>
<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#l00606">remmina_plugin_manager.c:606</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ac448c53d7a2066763d2b747d269f60ee"><div class="ttname"><a href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee">remmina_main_save_size</a></div><div class="ttdeci">static void remmina_main_save_size(void)</div><div class="ttdoc">Save the Remmina Main Window size to assure the main geometry at each restart. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00136">remmina_main.c:136</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ac448c53d7a2066763d2b747d269f60ee"><div class="ttname"><a href="remmina__main_8c.html#ac448c53d7a2066763d2b747d269f60ee">remmina_main_save_size</a></div><div class="ttdeci">static void remmina_main_save_size(void)</div><div class="ttdoc">Save the Remmina Main Window size to assure the main geometry at each restart. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00135">remmina_main.c:135</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7"><div class="ttname"><a href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00053">remmina_pref.h:53</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c5d264253ed2fc8f96ffcee508db93d">FILENAME_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00077">remmina_main.c:77</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00811">remmina_main.c:811</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00810">remmina_main.c:810</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a923b3e2712d969eb59d9291e99f933e8"><div class="ttname"><a href="remmina__main_8c.html#a923b3e2712d969eb59d9291e99f933e8">app_actions</a></div><div class="ttdeci">static GActionEntry app_actions[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00093">remmina_main.c:93</a></div></div>
<div class="ttc" id="struct___remmina_tool_plugin_html_ad83c522c030d51d5f0313b1f77f04d74"><div class="ttname"><a href="struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74">_RemminaToolPlugin::exec_func</a></div><div class="ttdeci">void(* exec_func)(GtkMenuItem *item, struct _RemminaToolPlugin *instance)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00121">plugin.h:121</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ac1a3a51f6d7f6a2411f9b38de860d766"><div class="ttname"><a href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766">remmina_main_on_view_toggle</a></div><div class="ttdeci">void remmina_main_on_view_toggle()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00888">remmina_main.c:888</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ac1a3a51f6d7f6a2411f9b38de860d766"><div class="ttname"><a href="remmina__main_8c.html#ac1a3a51f6d7f6a2411f9b38de860d766">remmina_main_on_view_toggle</a></div><div class="ttdeci">void remmina_main_on_view_toggle()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00887">remmina_main.c:887</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1f8f29e04fd120da5a66491ef0a4ff6c">NAME_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00072">remmina_main.c:72</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="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#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="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#l00511">remmina_main.c:511</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>
-<div class="ttc" id="remmina__main_8c_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01230">remmina_main.c:1230</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#l01551">remmina_main.c:1551</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8c.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01229">remmina_main.c:1229</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_ab93a69850cfb4117c223a3f145ced986"><div class="ttname"><a href="remmina__string__array_8c.html#ab93a69850cfb4117c223a3f145ced986">remmina_string_array_find</a></div><div class="ttdeci">gint remmina_string_array_find(RemminaStringArray *array, const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00092">remmina_string_array.c:92</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a96f7bec7ce32de6cf5deadcd5aec51ec"><div class="ttname"><a href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a></div><div class="ttdeci">gchar * remmina_string_array_to_string(RemminaStringArray *array)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00155">remmina_string_array.c:155</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a912f2057752ad0779485c3303e3e9b04"><div class="ttname"><a href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04">_RemminaMain::switch_dark_mode</a></div><div class="ttdeci">GtkSwitch * switch_dark_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00062">remmina_main.h:62</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aeb74f36e5fd58ceab9f13a184bfb2029"><div class="ttname"><a href="remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029">remmina_main_on_destroy_event</a></div><div class="ttdeci">void remmina_main_on_destroy_event()</div><div class="ttdoc">Called when the remminamain-&gt;window widget is destroyed (glade event handler) </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00245">remmina_main.c:245</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aeb74f36e5fd58ceab9f13a184bfb2029"><div class="ttname"><a href="remmina__main_8c.html#aeb74f36e5fd58ceab9f13a184bfb2029">remmina_main_on_destroy_event</a></div><div class="ttdeci">void remmina_main_on_destroy_event()</div><div class="ttdoc">Called when the remminamain-&gt;window widget is destroyed (glade event handler) </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00244">remmina_main.c:244</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_a85d5bd836f83ef1dbbcf4657f32e0792"><div class="ttname"><a href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a></div><div class="ttdeci">node_t * node</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00140">remmina_ssh.c:140</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="remmina__main_8c_html_a009f32092bd1d8dcd8e783d25416f3df"><div class="ttname"><a href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy()</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00177">remmina_main.c:177</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a009f32092bd1d8dcd8e783d25416f3df"><div class="ttname"><a href="remmina__main_8c.html#a009f32092bd1d8dcd8e783d25416f3df">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy()</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00176">remmina_main.c:176</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_a4ac66b7ebefb9bd8167737eb1af83cde"><div class="ttname"><a href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">_RemminaPlugin::description</a></div><div class="ttdeci">const gchar * description</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00059">plugin.h:59</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"><div class="ttname"><a href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a">remmina_main_on_accel_application_preferences</a></div><div class="ttdeci">void remmina_main_on_accel_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01008">remmina_main.c:1008</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a71f485dba1b11bf8cba129920767b5e6"><div class="ttname"><a href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6">remmina_main_load_file_list_callback</a></div><div class="ttdeci">static void remmina_main_load_file_list_callback(RemminaFile *remminafile, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00352">remmina_main.c:352</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a2a6ba822ef89ef8ad9f19340c2c8b7f5"><div class="ttname"><a href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5">remmina_main_load_file_tree_traverse</a></div><div class="ttdeci">static gboolean remmina_main_load_file_tree_traverse(GNode *node, GtkTreeStore *store, GtkTreeIter *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00377">remmina_main.c:377</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a1e8b7e8c0f7a47dc0409ae6eb18cfc6a"><div class="ttname"><a href="remmina__main_8c.html#a1e8b7e8c0f7a47dc0409ae6eb18cfc6a">remmina_main_on_accel_application_preferences</a></div><div class="ttdeci">void remmina_main_on_accel_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01007">remmina_main.c:1007</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a71f485dba1b11bf8cba129920767b5e6"><div class="ttname"><a href="remmina__main_8c.html#a71f485dba1b11bf8cba129920767b5e6">remmina_main_load_file_list_callback</a></div><div class="ttdeci">static void remmina_main_load_file_list_callback(RemminaFile *remminafile, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00351">remmina_main.c:351</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a2a6ba822ef89ef8ad9f19340c2c8b7f5"><div class="ttname"><a href="remmina__main_8c.html#a2a6ba822ef89ef8ad9f19340c2c8b7f5">remmina_main_load_file_tree_traverse</a></div><div class="ttdeci">static gboolean remmina_main_load_file_tree_traverse(GNode *node, GtkTreeStore *store, GtkTreeIter *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00376">remmina_main.c:376</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_ae1e1d579bdb2517bd0f86408b9d5f97c"><div class="ttname"><a href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">_RemminaMainPriv::file_model_filter</a></div><div class="ttdeci">GtkTreeModel * file_model_filter</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00089">remmina_main.h:89</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a847424fdb97ffe35d060409d4d738497"><div class="ttname"><a href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a></div><div class="ttdeci">static gboolean remmina_main_load_file_tree_find(GtkTreeModel *tree, GtkTreeIter *iter, const gchar *match_group)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00452">remmina_main.c:452</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a847424fdb97ffe35d060409d4d738497"><div class="ttname"><a href="remmina__main_8c.html#a847424fdb97ffe35d060409d4d738497">remmina_main_load_file_tree_find</a></div><div class="ttdeci">static gboolean remmina_main_load_file_tree_find(GtkTreeModel *tree, GtkTreeIter *iter, const gchar *match_group)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00451">remmina_main.c:451</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="struct___remmina_main_priv_html_a606c7e6dc78219e8e5536519db723a4d"><div class="ttname"><a href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">_RemminaMainPriv::selected_name</a></div><div class="ttdeci">gchar * selected_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00095">remmina_main.h:95</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01212">remmina_main.c:1212</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8c.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01211">remmina_main.c:1211</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a0e6602776373cf6a198d249df6e87150"><div class="ttname"><a href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">_RemminaMain::monitor</a></div><div class="ttdeci">RemminaMonitor * monitor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00084">remmina_main.h:84</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4504684f0e67bb50157fd6862182e2c4"><div class="ttname"><a href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">_RemminaPref::main_sort_order</a></div><div class="ttdeci">gint main_sort_order</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00219">remmina_pref.h:219</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01044">remmina_main.c:1044</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01043">remmina_main.c:1043</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__main_8c_html_a627eb26ab02f0093365ed6b10dab0320"><div class="ttname"><a href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320">remmina_main_load_files_cb</a></div><div class="ttdeci">void remmina_main_load_files_cb(GtkEntry *entry, char *string, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00759">remmina_main.c:759</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a861de52d1b5ec54591d0592de6289d79"><div class="ttname"><a href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79">remmina_main_on_window_state_event</a></div><div class="ttdeci">gboolean remmina_main_on_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01474">remmina_main.c:1474</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a627eb26ab02f0093365ed6b10dab0320"><div class="ttname"><a href="remmina__main_8c.html#a627eb26ab02f0093365ed6b10dab0320">remmina_main_load_files_cb</a></div><div class="ttdeci">void remmina_main_load_files_cb(GtkEntry *entry, char *string, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00758">remmina_main.c:758</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a861de52d1b5ec54591d0592de6289d79"><div class="ttname"><a href="remmina__main_8c.html#a861de52d1b5ec54591d0592de6289d79">remmina_main_on_window_state_event</a></div><div class="ttdeci">gboolean remmina_main_on_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01463">remmina_main.c:1463</a></div></div>
<div class="ttc" id="remmina__exec_8h_html_ae9dfd6986f18cb3d846a4933ac792fd5ae79d14a54e119795478a6e390d7d3b40"><div class="ttname"><a href="remmina__exec_8h.html#ae9dfd6986f18cb3d846a4933ac792fd5ae79d14a54e119795478a6e390d7d3b40">REMMINA_CONDEXIT_ONMAINWINDELETE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__exec_8h_source.html#l00061">remmina_exec.h:61</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="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#l01646">remmina_main.c:1646</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ab3be770af5f21758fa641b274ca967ec"><div class="ttname"><a href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">_RemminaMain::menu_header_button</a></div><div class="ttdeci">GtkMenuButton * menu_header_button</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00052">remmina_main.h:52</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aa46e6b815c241d32a476a29053dbf296"><div class="ttname"><a href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296">remmina_main_load_file_tree_group</a></div><div class="ttdeci">static void remmina_main_load_file_tree_group(GtkTreeStore *store)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00404">remmina_main.c:404</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00907">remmina_main.c:907</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aa46e6b815c241d32a476a29053dbf296"><div class="ttname"><a href="remmina__main_8c.html#aa46e6b815c241d32a476a29053dbf296">remmina_main_load_file_tree_group</a></div><div class="ttdeci">static void remmina_main_load_file_tree_group(GtkTreeStore *store)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00403">remmina_main.c:403</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8c.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00906">remmina_main.c:906</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_aedec4e9cf18d99a559aa51065c2bc276"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a></div><div class="ttdeci">void remmina_plugin_manager_show(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00516">remmina_plugin_manager.c:516</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388ad68c7d7d2f1cfe0321e87c4a833a0756">PLUGIN_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00075">remmina_main.c:75</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ac767825cb87a34531306cfb587216d20"><div class="ttname"><a href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a></div><div class="ttdeci">static void remmina_main_import_file_list(GSList *files)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01088">remmina_main.c:1088</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ac767825cb87a34531306cfb587216d20"><div class="ttname"><a href="remmina__main_8c.html#ac767825cb87a34531306cfb587216d20">remmina_main_import_file_list</a></div><div class="ttdeci">static void remmina_main_import_file_list(GSList *files)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01087">remmina_main.c:1087</a></div></div>
<div class="ttc" id="remmina__icon_8h_html"><div class="ttname"><a href="remmina__icon_8h.html">remmina_icon.h</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01333">remmina_main.c:1333</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8c.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01322">remmina_main.c:1322</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a2d6960ab62869638a77d2fe5bd72c7f6"><div class="ttname"><a href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">_RemminaMain::menu_popup</a></div><div class="ttdeci">GtkMenu * menu_popup</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00051">remmina_main.h:51</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a829d3ad1468d780380ae1ad693532e82"><div class="ttname"><a href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82">remmina_main_idle_destroy</a></div><div class="ttdeci">gboolean remmina_main_idle_destroy(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00232">remmina_main.c:232</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a4477897686d091d6f57e7f9401674a8c"><div class="ttname"><a href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c">remmina_main_tree_row_activated</a></div><div class="ttdeci">static gboolean remmina_main_tree_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00878">remmina_main.c:878</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01224">remmina_main.c:1224</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a829d3ad1468d780380ae1ad693532e82"><div class="ttname"><a href="remmina__main_8c.html#a829d3ad1468d780380ae1ad693532e82">remmina_main_idle_destroy</a></div><div class="ttdeci">gboolean remmina_main_idle_destroy(gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00231">remmina_main.c:231</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a4477897686d091d6f57e7f9401674a8c"><div class="ttname"><a href="remmina__main_8c.html#a4477897686d091d6f57e7f9401674a8c">remmina_main_tree_row_activated</a></div><div class="ttdeci">static gboolean remmina_main_tree_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00877">remmina_main.c:877</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8c.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01223">remmina_main.c:1223</a></div></div>
<div class="ttc" id="remmina__string__array_8h_html"><div class="ttname"><a href="remmina__string__array_8h.html">remmina_string_array.h</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01664">remmina_main.c:1664</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01653">remmina_main.c:1653</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a7a4eb201dd185ba606af5c486ef55e7f"><div class="ttname"><a href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">_RemminaMainPriv::initialized</a></div><div class="ttdeci">gboolean initialized</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00092">remmina_main.h:92</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a4d053f07c7bfa18ee1db38382a64c454">LABELS_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00078">remmina_main.c:78</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>
@@ -205,11 +204,11 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a18872e092d22f5d3accb66d6a22845d7"><div class="ttname"><a href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">_RemminaPref::prevent_snap_welcome_message</a></div><div class="ttdeci">gboolean prevent_snap_welcome_message</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00224">remmina_pref.h:224</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa8d4c923cb9ca1be451436d1790e8ee5"><div class="ttname"><a href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">_RemminaPref::expanded_group</a></div><div class="ttdeci">gchar * expanded_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00220">remmina_pref.h:220</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a7b03d239c21141a202d0698492cfae95"><div class="ttname"><a href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">_RemminaMain::box_quick_connect</a></div><div class="ttdeci">GtkBox * box_quick_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00067">remmina_main.h:67</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_adf073486149762f547504020484bff70"><div class="ttname"><a href="remmina__main_8c.html#adf073486149762f547504020484bff70">remmina_main_on_drag_data_received</a></div><div class="ttdeci">void remmina_main_on_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01443">remmina_main.c:1443</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_adf073486149762f547504020484bff70"><div class="ttname"><a href="remmina__main_8c.html#adf073486149762f547504020484bff70">remmina_main_on_drag_data_received</a></div><div class="ttdeci">void remmina_main_on_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint time, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01432">remmina_main.c:1432</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a7db532834f4fd6360956cb0e2383b0fb"><div class="ttname"><a href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">_RemminaMain::column_files_list_server</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_server</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00075">remmina_main.h:75</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__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__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#l01663">remmina_main.c:1663</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#l00847">remmina_main.c:847</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#l01316">remmina_main.c:1316</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>
@@ -219,108 +218,106 @@ $(document).ready(function(){initNavTree('remmina__main_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a8edfd2a9a9a06b1fd876fbe8742b9ff6"><div class="ttname"><a href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">_RemminaPref::main_maximize</a></div><div class="ttdeci">gboolean main_maximize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00217">remmina_pref.h:217</a></div></div>
<div class="ttc" id="struct___remmina_main_html_acacd90f3e6df6a864154edba01464ae2"><div class="ttname"><a href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">_RemminaMain::statusbar_main</a></div><div class="ttdeci">GtkStatusbar * statusbar_main</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00079">remmina_main.h:79</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a8e21f782dd6e0a6d80f0f622898b2a48"><div class="ttname"><a href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">_RemminaMain::column_files_list_plugin</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00076">remmina_main.h:76</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a1cac4199e40e35bf3fcdb98841615657"><div class="ttname"><a href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657">remmina_main_quick_search_on_changed</a></div><div class="ttdeci">void remmina_main_quick_search_on_changed(GtkEditable *editable, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01423">remmina_main.c:1423</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01016">remmina_main.c:1016</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a1cac4199e40e35bf3fcdb98841615657"><div class="ttname"><a href="remmina__main_8c.html#a1cac4199e40e35bf3fcdb98841615657">remmina_main_quick_search_on_changed</a></div><div class="ttdeci">void remmina_main_quick_search_on_changed(GtkEditable *editable, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01412">remmina_main.c:1412</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01015">remmina_main.c:1015</a></div></div>
<div class="ttc" id="remmina__file__editor_8h_html"><div class="ttname"><a href="remmina__file__editor_8h.html">remmina_file_editor.h</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ab7c6aebff1b06ef97c36bfa9d360b0c1"><div class="ttname"><a href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">_RemminaMain::builder</a></div><div class="ttdeci">GtkBuilder * builder</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00048">remmina_main.h:48</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_a1b13dc96ccf8ebad045f02c58eb1d005"><div class="ttname"><a href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">_RemminaPref::periodic_rmnews_get_count</a></div><div class="ttdeci">glong periodic_rmnews_get_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00241">remmina_pref.h:241</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html"><div class="ttname"><a href="struct___remmina_main_priv.html">_RemminaMainPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00087">remmina_main.h:87</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a4573e086e1ff8507eb9447b25bf11b92"><div class="ttname"><a href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a></div><div class="ttdeci">GtkBuilder * remmina_public_gtk_builder_new_from_resource(gchar *resource)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00572">remmina_public.c:572</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00974">remmina_main.c:974</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a1f5f9a964a75214d500e7a9fca1bd8a6"><div class="ttname"><a href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6">is_empty</a></div><div class="ttdeci">static gboolean is_empty(const gchar *s)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01252">remmina_main.c:1252</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8c.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00973">remmina_main.c:973</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a1f5f9a964a75214d500e7a9fca1bd8a6"><div class="ttname"><a href="remmina__main_8c.html#a1f5f9a964a75214d500e7a9fca1bd8a6">is_empty</a></div><div class="ttdeci">static gboolean is_empty(const gchar *s)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01241">remmina_main.c:1241</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a7f1c8e427a25c2d5cede3952b1d0ad90"><div class="ttname"><a href="remmina__string__array_8c.html#a7f1c8e427a25c2d5cede3952b1d0ad90">remmina_string_array_new_from_string</a></div><div class="ttdeci">RemminaStringArray * remmina_string_array_new_from_string(const gchar *strs)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00051">remmina_string_array.c:51</a></div></div>
-<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="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#l01143">remmina_pref.c:1143</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#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>
-<div class="ttc" id="remmina__main_8c_html_aa4d9b76d32fa500f4b9f39a19e4eaaf2"><div class="ttname"><a href="remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2">remmina_main_on_show</a></div><div class="ttdeci">void remmina_main_on_show(GtkWidget *w, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01553">remmina_main.c:1553</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_afefc1b651e1c546e949dbe6df72b0300"><div class="ttname"><a href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300">remmina_main_init</a></div><div class="ttdeci">static void remmina_main_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01481">remmina_main.c:1481</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#l00146">remmina_main.c:146</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aa4d9b76d32fa500f4b9f39a19e4eaaf2"><div class="ttname"><a href="remmina__main_8c.html#aa4d9b76d32fa500f4b9f39a19e4eaaf2">remmina_main_on_show</a></div><div class="ttdeci">void remmina_main_on_show(GtkWidget *w, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01542">remmina_main.c:1542</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_afefc1b651e1c546e949dbe6df72b0300"><div class="ttname"><a href="remmina__main_8c.html#afefc1b651e1c546e949dbe6df72b0300">remmina_main_init</a></div><div class="ttdeci">static void remmina_main_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01470">remmina_main.c:1470</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a81f987e527d521be54aaf3f46dfe7ced"><div class="ttname"><a href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">_RemminaMain::tree_files_list</a></div><div class="ttdeci">GtkTreeView * tree_files_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00072">remmina_main.h:72</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aa20963aed43242994c88d5a97a546355"><div class="ttname"><a href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a></div><div class="ttdeci">static void remmina_main_select_file(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00615">remmina_main.c:615</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a40493bb60c169e53e2e08a0d0a808302"><div class="ttname"><a href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302">remmina_main_on_delete_event</a></div><div class="ttdeci">gboolean remmina_main_on_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00222">remmina_main.c:222</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01218">remmina_main.c:1218</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aa20963aed43242994c88d5a97a546355"><div class="ttname"><a href="remmina__main_8c.html#aa20963aed43242994c88d5a97a546355">remmina_main_select_file</a></div><div class="ttdeci">static void remmina_main_select_file(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00614">remmina_main.c:614</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a40493bb60c169e53e2e08a0d0a808302"><div class="ttname"><a href="remmina__main_8c.html#a40493bb60c169e53e2e08a0d0a808302">remmina_main_on_delete_event</a></div><div class="ttdeci">gboolean remmina_main_on_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00221">remmina_main.c:221</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8c.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01217">remmina_main.c:1217</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ae3c2c0b9855bb44b5b9a27a3178d32e7"><div class="ttname"><a href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">_RemminaMain::view_toggle_button</a></div><div class="ttdeci">GtkToggleButton * view_toggle_button</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00063">remmina_main.h:63</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a95532ac6d110eeeb2e41d4b2a329797c"><div class="ttname"><a href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00190">remmina_main.c:190</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a95532ac6d110eeeb2e41d4b2a329797c"><div class="ttname"><a href="remmina__main_8c.html#a95532ac6d110eeeb2e41d4b2a329797c">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00189">remmina_main.c:189</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a5e421ba636d34e21bba5ece463e98892"><div class="ttname"><a href="remmina__file_8c.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="struct___remmina_main_html_a56ac6ffe61c0d3663ebc6b26e65a8cbc"><div class="ttname"><a href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">_RemminaMain::column_files_list_group</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00074">remmina_main.h:74</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aba1a89a2400c5cc8373c6bd34602ac10"><div class="ttname"><a href="remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10">remmina_main_file_list_on_row_activated</a></div><div class="ttdeci">void remmina_main_file_list_on_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01368">remmina_main.c:1368</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a74cb130b886c2b905f651e777644a08c"><div class="ttname"><a href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a></div><div class="ttdeci">static void remmina_main_expand_group_traverse(GtkTreeIter *iter)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00414">remmina_main.c:414</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aba1a89a2400c5cc8373c6bd34602ac10"><div class="ttname"><a href="remmina__main_8c.html#aba1a89a2400c5cc8373c6bd34602ac10">remmina_main_file_list_on_row_activated</a></div><div class="ttdeci">void remmina_main_file_list_on_row_activated(GtkTreeView *tree, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01357">remmina_main.c:1357</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a74cb130b886c2b905f651e777644a08c"><div class="ttname"><a href="remmina__main_8c.html#a74cb130b886c2b905f651e777644a08c">remmina_main_expand_group_traverse</a></div><div class="ttdeci">static void remmina_main_expand_group_traverse(GtkTreeIter *iter)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00413">remmina_main.c:413</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a467cf8ebc87ccdb68b9f88bce95c9f3a"><div class="ttname"><a href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">_RemminaMainPriv::expanded_group</a></div><div class="ttdeci">RemminaStringArray * expanded_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00097">remmina_main.h:97</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a3c5043279b5d98d4d08635d33402ea66"><div class="ttname"><a href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66">remmina_main_selection_func</a></div><div class="ttdeci">static gboolean remmina_main_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00319">remmina_main.c:319</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00793">remmina_main.c:793</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a9e60326026d7de56882bc83c0084fd12"><div class="ttname"><a href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a></div><div class="ttdeci">static void remmina_main_clear_selection_data(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00258">remmina_main.c:258</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a3c5043279b5d98d4d08635d33402ea66"><div class="ttname"><a href="remmina__main_8c.html#a3c5043279b5d98d4d08635d33402ea66">remmina_main_selection_func</a></div><div class="ttdeci">static gboolean remmina_main_selection_func(GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00318">remmina_main.c:318</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8c.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00792">remmina_main.c:792</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a9e60326026d7de56882bc83c0084fd12"><div class="ttname"><a href="remmina__main_8c.html#a9e60326026d7de56882bc83c0084fd12">remmina_main_clear_selection_data</a></div><div class="ttdeci">static void remmina_main_clear_selection_data(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00257">remmina_main.c:257</a></div></div>
<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#l04438">rcw.c:4438</a></div></div>
-<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="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#l01077">remmina_main.c:1077</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#l00079">rcw.c:79</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__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#l01390">remmina_main.c:1390</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__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#l01189">remmina_main.c:1189</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>
<div class="ttc" id="remmina__pref_8h_html_aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df"><div class="ttname"><a href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00054">remmina_pref.h:54</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>
<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#l00438">remmina_plugin_manager.c:438</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a7be10e330f0c2a3f74e119cde443786f"><div class="ttname"><a href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f">remmina_main_add_tool_plugin</a></div><div class="ttdeci">static gboolean remmina_main_add_tool_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01462">remmina_main.c:1462</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a7be10e330f0c2a3f74e119cde443786f"><div class="ttname"><a href="remmina__main_8c.html#a7be10e330f0c2a3f74e119cde443786f">remmina_main_add_tool_plugin</a></div><div class="ttdeci">static gboolean remmina_main_add_tool_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01451">remmina_main.c:1451</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__main_8c_html_a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a8c129f382d9456db6f671e1e6e99d32f">SERVER_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00074">remmina_main.c:74</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>
-<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a2b637b91fededa6eb7f4be69da080445">PROTOCOL_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00071">remmina_main.c:71</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00943">remmina_main.c:943</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8c.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00942">remmina_main.c:942</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a87a88c763f806d76fdee5a233c3ad7cd"><div class="ttname"><a href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">_RemminaMainPriv::file_model_sort</a></div><div class="ttdeci">GtkTreeModel * file_model_sort</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00090">remmina_main.h:90</a></div></div>
<div class="ttc" id="rcw_8c_html_aa37f2a9c56df0ce1a0dbc32f8989e4b5"><div class="ttname"><a href="rcw_8c.html#aa37f2a9c56df0ce1a0dbc32f8989e4b5">rcw_open_from_filename</a></div><div class="ttdeci">gboolean rcw_open_from_filename(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="rcw_8c_source.html#l04390">rcw.c:4390</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a8ebbcba2c07af0938b3c29e316747d12"><div class="ttname"><a href="remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12">supported_mime_types</a></div><div class="ttdeci">static const gchar * supported_mime_types[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00084">remmina_main.c:84</a></div></div>
<div class="ttc" id="remmina__main_8c_html_a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b"><div class="ttname"><a href="remmina__main_8c.html#a385c44f6fb256e5716a2302a5b940388a1704de86134c42b13d2e5fd7cf7c903b">GROUP_COLUMN</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00073">remmina_main.c:73</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01361">remmina_main.c:1361</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8c.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01350">remmina_main.c:1350</a></div></div>
<div class="ttc" id="struct___remmina_file_plugin_html_a8bf634ff09caba624ecf93c42e12af78"><div class="ttname"><a href="struct___remmina_file_plugin.html#a8bf634ff09caba624ecf93c42e12af78">_RemminaFilePlugin::export_func</a></div><div class="ttdeci">gboolean(* export_func)(struct _RemminaFilePlugin *instance, RemminaFile *file, const gchar *to_file)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00110">plugin.h:110</a></div></div>
-<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#l00086">remmina.c:86</a></div></div>
+<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#l00085">remmina.c:85</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#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__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#l00127">remmina_main.c:127</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="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#l01253">remmina_main.c:1253</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>
<div class="ttc" id="remmina__string__array_8c_html_a2aaacca7db4b86f836486cfb559398f0"><div class="ttname"><a href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a></div><div class="ttdeci">void remmina_string_array_add(RemminaStringArray *array, const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00086">remmina_string_array.c:86</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a8ccd8303ada6e26880504fc58812fbda"><div class="ttname"><a href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda">remmina_drop_types</a></div><div class="ttdeci">static GtkTargetEntry remmina_drop_types[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00123">remmina_main.c:123</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a8ccd8303ada6e26880504fc58812fbda"><div class="ttname"><a href="remmina__main_8c.html#a8ccd8303ada6e26880504fc58812fbda">remmina_drop_types</a></div><div class="ttdeci">static GtkTargetEntry remmina_drop_types[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00122">remmina_main.c:122</a></div></div>
<div class="ttc" id="struct___remmina_main_html_aecb54d7c3dd1e86a16e24ea2e00d4ddd"><div class="ttname"><a href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">_RemminaMain::search_bar</a></div><div class="ttdeci">GtkSearchBar * search_bar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00065">remmina_main.h:65</a></div></div>
<div class="ttc" id="remmina__main_8c_html_ab7c680e1f6ffeef21cb928a083d36d89"><div class="ttname"><a href="remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89">remminamain</a></div><div class="ttdeci">static RemminaMain * remminamain</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00066">remmina_main.c:66</a></div></div>
<div class="ttc" id="remmina__file__editor_8c_html_aa5c50852f8569f075eec5d5db30c2ebf"><div class="ttname"><a href="remmina__file__editor_8c.html#aa5c50852f8569f075eec5d5db30c2ebf">remmina_file_editor_new_copy</a></div><div class="ttdeci">GtkWidget * remmina_file_editor_new_copy(const gchar *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__editor_8c_source.html#l02052">remmina_file_editor.c:2052</a></div></div>
-<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="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#l01069">remmina_main.c:1069</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#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>
<div class="ttc" id="remmina__external__tools_8h_html"><div class="ttname"><a href="remmina__external__tools_8h.html">remmina_external_tools.h</a></div></div>
<div class="ttc" id="remmina__exec_8h_html"><div class="ttname"><a href="remmina__exec_8h.html">remmina_exec.h</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00691">remmina_pref_dialog.c:691</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00686">remmina_pref_dialog.c:686</a></div></div>
<div class="ttc" id="remmina__unlock_8h_html"><div class="ttname"><a href="remmina__unlock_8h.html">remmina_unlock.h</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_a6593a3f297f420f012405fa582819857"><div class="ttname"><a href="remmina__file__manager_8c.html#a6593a3f297f420f012405fa582819857">remmina_file_manager_get_group_tree</a></div><div class="ttdeci">GNode * remmina_file_manager_get_group_tree(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00302">remmina_file_manager.c:302</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01339">remmina_main.c:1339</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8c.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01328">remmina_main.c:1328</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a0307278dd7770ab490f4687f2eb00e76"><div class="ttname"><a href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">_RemminaMainPriv::override_view_file_mode_to_list</a></div><div class="ttdeci">gboolean override_view_file_mode_to_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00096">remmina_main.h:96</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01155">remmina_main.c:1155</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a6a466d0b07944e619bd9b0e473c8a5bd"><div class="ttname"><a href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd">remmina_main_file_editor_destroy</a></div><div class="ttdeci">static void remmina_main_file_editor_destroy(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00802">remmina_main.c:802</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8c.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01154">remmina_main.c:1154</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a6a466d0b07944e619bd9b0e473c8a5bd"><div class="ttname"><a href="remmina__main_8c.html#a6a466d0b07944e619bd9b0e473c8a5bd">remmina_main_file_editor_destroy</a></div><div class="ttdeci">static void remmina_main_file_editor_destroy(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00801">remmina_main.c:801</a></div></div>
<div class="ttc" id="remmina__file__manager_8c_html_a55a717aafc046713380bd2c55f29165a"><div class="ttname"><a href="remmina__file__manager_8c.html#a55a717aafc046713380bd2c55f29165a">remmina_file_manager_iterate</a></div><div class="ttdeci">gint remmina_file_manager_iterate(GFunc func, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__file__manager_8c_source.html#l00177">remmina_file_manager.c:177</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a7c139ee405d50330b1d9bfb646c0258c"><div class="ttname"><a href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">_RemminaPref::dark_theme</a></div><div class="ttdeci">gboolean dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00148">remmina_pref.h:148</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3"><div class="ttname"><a href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3">REMMINA_ACTION_EDIT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00059">remmina_pref.h:59</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a4a4733c243f20c3ffc27105003f5e30e"><div class="ttname"><a href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e">remmina_main_expand_group</a></div><div class="ttdeci">static void remmina_main_expand_group(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00443">remmina_main.c:443</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_af51fc7233eb2397a5074ba37b5c5275f"><div class="ttname"><a href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f">remmina_main_quick_search_on_icon_press</a></div><div class="ttdeci">void remmina_main_quick_search_on_icon_press(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01416">remmina_main.c:1416</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aea426b2e8fc03f963bb2b98cb8649adf"><div class="ttname"><a href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf">remmina_main_on_accel_search_toggle</a></div><div class="ttdeci">void remmina_main_on_accel_search_toggle(RemminaMain *remminamain)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01355">remmina_main.c:1355</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a4a4733c243f20c3ffc27105003f5e30e"><div class="ttname"><a href="remmina__main_8c.html#a4a4733c243f20c3ffc27105003f5e30e">remmina_main_expand_group</a></div><div class="ttdeci">static void remmina_main_expand_group(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00442">remmina_main.c:442</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_af51fc7233eb2397a5074ba37b5c5275f"><div class="ttname"><a href="remmina__main_8c.html#af51fc7233eb2397a5074ba37b5c5275f">remmina_main_quick_search_on_icon_press</a></div><div class="ttdeci">void remmina_main_quick_search_on_icon_press(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent *event, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01405">remmina_main.c:1405</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aea426b2e8fc03f963bb2b98cb8649adf"><div class="ttname"><a href="remmina__main_8c.html#aea426b2e8fc03f963bb2b98cb8649adf">remmina_main_on_accel_search_toggle</a></div><div class="ttdeci">void remmina_main_on_accel_search_toggle(RemminaMain *remminamain)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01344">remmina_main.c:1344</a></div></div>
<div class="ttc" id="remmina__file_8h_html"><div class="ttname"><a href="remmina__file_8h.html">remmina_file.h</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a3617295e74fa84edbd41dedc601402a7"><div class="ttname"><a href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a></div><div class="ttdeci">static void remmina_main_load_files()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00643">remmina_main.c:643</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a3617295e74fa84edbd41dedc601402a7"><div class="ttname"><a href="remmina__main_8c.html#a3617295e74fa84edbd41dedc601402a7">remmina_main_load_files</a></div><div class="ttdeci">static void remmina_main_load_files()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00642">remmina_main.c:642</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a1ffeff8198ae0dc7c2461001118fcc5a"><div class="ttname"><a href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">_RemminaMain::column_files_list_date</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_date</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00077">remmina_main.h:77</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01236">remmina_main.c:1236</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a85aa313453e0ecaa17bcce233973998d"><div class="ttname"><a href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d">remmina_main_action_tools_import_on_response</a></div><div class="ttdeci">static void remmina_main_action_tools_import_on_response(GtkDialog *dialog, gint response_id, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01131">remmina_main.c:1131</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01184">remmina_main.c:1184</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a33ef5745d8b934ef52379c277d3a1ab2"><div class="ttname"><a href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2">remmina_main_dexit</a></div><div class="ttdeci">static gboolean remmina_main_dexit(gpointer data)</div><div class="ttdoc">Try to exit remmina after a delete window event. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00215">remmina_main.c:215</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_a210e9e04c7c97cc86412044de31f659d"><div class="ttname"><a href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d">remmina_main_quickconnect_on_click</a></div><div class="ttdeci">gboolean remmina_main_quickconnect_on_click(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01318">remmina_main.c:1318</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8c.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01235">remmina_main.c:1235</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a85aa313453e0ecaa17bcce233973998d"><div class="ttname"><a href="remmina__main_8c.html#a85aa313453e0ecaa17bcce233973998d">remmina_main_action_tools_import_on_response</a></div><div class="ttdeci">static void remmina_main_action_tools_import_on_response(GtkDialog *dialog, gint response_id, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01130">remmina_main.c:1130</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01183">remmina_main.c:1183</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a33ef5745d8b934ef52379c277d3a1ab2"><div class="ttname"><a href="remmina__main_8c.html#a33ef5745d8b934ef52379c277d3a1ab2">remmina_main_dexit</a></div><div class="ttdeci">static gboolean remmina_main_dexit(gpointer data)</div><div class="ttdoc">Try to exit remmina after a delete window event. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00214">remmina_main.c:214</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_a210e9e04c7c97cc86412044de31f659d"><div class="ttname"><a href="remmina__main_8c.html#a210e9e04c7c97cc86412044de31f659d">remmina_main_quickconnect_on_click</a></div><div class="ttdeci">gboolean remmina_main_quickconnect_on_click(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01307">remmina_main.c:1307</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/remmina__main_8h.html b/public/remmina__main_8h.html
index 64edcb762..1f0edfe27 100644
--- a/public/remmina__main_8h.html
+++ b/public/remmina__main_8h.html
@@ -129,8 +129,6 @@ Functions</h2></td></tr>
<tr class="separator:ad99b9c0bf2fa8c166a8b4a09e06ffdf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac0bb51159be042fecab0103e73a54dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
<tr class="separator:aac0bb51159be042fecab0103e73a54dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
-<tr class="separator:a0b4ec1e78b79adaa180a385ac50c20d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05dbb6ce820f3a137949b919d0efa6a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
<tr class="separator:a05dbb6ce820f3a137949b919d0efa6a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf51d42fa2c5ce84164b5514b4634229"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a> (GSimpleAction *action, GVariant *param, gpointer data)</td></tr>
@@ -224,7 +222,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00190">190</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00189">189</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -244,7 +242,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01645">1645</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01634">1634</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -264,7 +262,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01562">1562</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01551">1551</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -300,7 +298,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01236">1236</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01235">1235</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -336,7 +334,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01190">1190</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01189">1189</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -372,7 +370,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01044">1044</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01043">1043</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -408,43 +406,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00811">811</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
-
-</div>
-</div>
-<a id="a0b4ec1e78b79adaa180a385ac50c20d6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0b4ec1e78b79adaa180a385ac50c20d6">&#9670;&nbsp;</a></span>remmina_main_on_action_application_news()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void remmina_main_on_action_application_news </td>
- <td>(</td>
- <td class="paramtype">GSimpleAction *&#160;</td>
- <td class="paramname"><em>action</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">GVariant *&#160;</td>
- <td class="paramname"><em>param</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">gpointer&#160;</td>
- <td class="paramname"><em>data</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01242">1242</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00810">810</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -480,7 +442,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01184">1184</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01183">1183</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -516,7 +478,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01016">1016</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01015">1015</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -552,7 +514,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01070">1070</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01069">1069</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -588,7 +550,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01333">1333</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01322">1322</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -624,7 +586,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00765">765</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00764">764</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -660,7 +622,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00907">907</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00906">906</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -696,7 +658,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00974">974</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00973">973</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -732,7 +694,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00943">943</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00942">942</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -768,7 +730,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00793">793</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00792">792</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -804,7 +766,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00848">848</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00847">847</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -840,7 +802,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01361">1361</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01350">1350</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -876,7 +838,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01218">1218</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01217">1217</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -912,7 +874,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01230">1230</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01229">1229</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -948,7 +910,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01224">1224</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01223">1223</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -984,7 +946,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01206">1206</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01205">1205</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1020,7 +982,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01212">1212</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01211">1211</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1056,7 +1018,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01339">1339</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01328">1328</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1092,7 +1054,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01155">1155</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01154">1154</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1128,7 +1090,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01143">1143</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01142">1142</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1150,7 +1112,7 @@ Functions</h2></td></tr>
<p>Called when the remminamain-&gt;window widget is destroyed (glade event handler) </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00245">245</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00244">244</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1173,7 +1135,7 @@ Functions</h2></td></tr>
<p>Save the Remmina Main Window size and the expanded group before to close Remmina. </p>
<p>This function uses remmina_main_save_size and remmina_main_save_expanded_group. </p>
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00177">177</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l00176">176</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1209,7 +1171,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01664">1664</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01653">1653</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1229,7 +1191,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01674">1674</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01663">1663</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
@@ -1249,7 +1211,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01657">1657</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__main_8c_source.html#l01646">1646</a> of file <a class="el" href="remmina__main_8c_source.html">remmina_main.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__main_8h.js b/public/remmina__main_8h.js
index 9b18f0f2e..911dcd884 100644
--- a/public/remmina__main_8h.js
+++ b/public/remmina__main_8h.js
@@ -11,7 +11,6 @@ var remmina__main_8h =
[ "remmina_main_on_action_application_dark_theme", "remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b", null ],
[ "remmina_main_on_action_application_default", "remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1", null ],
[ "remmina_main_on_action_application_mpchange", "remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229", null ],
- [ "remmina_main_on_action_application_news", "remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6", null ],
[ "remmina_main_on_action_application_plugins", "remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc", null ],
[ "remmina_main_on_action_application_preferences", "remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92", null ],
[ "remmina_main_on_action_application_quit", "remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a", null ],
diff --git a/public/remmina__main_8h_source.html b/public/remmina__main_8h_source.html
index 44758411b..5320e3d68 100644
--- a/public/remmina__main_8h_source.html
+++ b/public/remmina__main_8h_source.html
@@ -86,82 +86,81 @@ $(document).ready(function(){initNavTree('remmina__main_8h_source.html','');});
<div class="title">remmina_main.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__main_8h.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">#pragma once</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 &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="remmina__monitor_8h.html">remmina_monitor.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.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__string__array_8h.html">remmina_string_array.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"><a class="line" href="remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052"> 45</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_main_priv.html">_RemminaMainPriv</a> <a class="code" href="struct___remmina_main_priv.html">RemminaMainPriv</a>;</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="struct___remmina_main.html"> 47</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_main.html">_RemminaMain</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1"> 48</a></span>&#160; GtkBuilder * <a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2"> 49</a></span>&#160; GtkWindow * <a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6"> 51</a></span>&#160; GtkMenu * <a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec"> 52</a></span>&#160; GtkMenuButton * <a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62"> 53</a></span>&#160; GtkMenu * <a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4"> 54</a></span>&#160; GtkRadioMenuItem * <a class="code" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">menuitem_view_mode_list</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0"> 55</a></span>&#160; GtkRadioMenuItem * <a class="code" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">menuitem_view_mode_tree</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a37436a0fbd3d64082192826328fe063a"> 56</a></span>&#160; GtkMenuItem * <a class="code" href="struct___remmina_main.html#a37436a0fbd3d64082192826328fe063a">menuitem_connection_quit</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">/* Button new */</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e"> 58</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a641297035bda72ca18ffe13816a44b21"> 59</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#a641297035bda72ca18ffe13816a44b21">button_make_default</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">/* Search bar objects */</span></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72"> 61</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04"> 62</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04">switch_dark_mode</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7"> 63</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aa1e811e50525f5a74bb781f8c8a10670"> 64</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#aa1e811e50525f5a74bb781f8c8a10670">ustats_toggle</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd"> 65</a></span>&#160; GtkSearchBar * <a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">/* Quick connect objects */</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95"> 67</a></span>&#160; GtkBox * <a class="code" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">box_quick_connect</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39"> 68</a></span>&#160; GtkComboBoxText * <a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095"> 69</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aebb188bd83f8dcfb80cad10e43181774"> 70</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#aebb188bd83f8dcfb80cad10e43181774">button_quick_connect</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced"> 72</a></span>&#160; GtkTreeView * <a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5"> 73</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">column_files_list_name</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc"> 74</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb"> 75</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">column_files_list_server</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48"> 76</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">column_files_list_plugin</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a"> 77</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9"> 78</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2"> 79</a></span>&#160; GtkStatusbar * <a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f"> 80</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0baa48aa1ed260cead7af434c3f69549"> 82</a></span>&#160; GtkAccelGroup * <a class="code" href="struct___remmina_main.html#a0baa48aa1ed260cead7af434c3f69549">accelgroup_shortcuts</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980"> 83</a></span>&#160; <a class="code" href="struct___remmina_main_priv.html">RemminaMainPriv</a> * <a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150"> 84</a></span>&#160; <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> * <a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;} <a class="code" href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">RemminaMain</a>;</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"><a class="line" href="struct___remmina_main_priv.html"> 87</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_main_priv.html">_RemminaMainPriv</a> {</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f"> 88</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c"> 89</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd"> 90</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>;</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"><a class="line" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f"> 92</a></span>&#160; gboolean <a class="code" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">initialized</a>;</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"><a class="line" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d"> 95</a></span>&#160; gchar * <a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76"> 96</a></span>&#160; gboolean <a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a"> 97</a></span>&#160; <a class="code" href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a> * <a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>;</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;G_BEGIN_DECLS</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"> 102</span>&#160;<span class="comment">/* Create the remminamain struct and the remmina main Remmina window */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;GtkWidget *<a class="code" href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7">remmina_main_new</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">/* Get the current main GTK window or NULL if not initialized */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;GtkWindow *<a class="code" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc">remmina_main_get_window</a>(<span class="keywordtype">void</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="keywordtype">void</span> <a class="code" href="remmina__main_8h.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="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8">remmina_main_destroy</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5">remmina_main_on_destroy_event</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5">remmina_main_save_before_destroy</a>(<span class="keywordtype">void</span>);</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;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a>(GtkMessageType msg, GtkButtonsType buttons, <span class="keyword">const</span> gchar* message);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(<span class="keyword">const</span> gchar *message);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main_on_action_application_dark_theme</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af">remmina_main_on_action_connection_new</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a>(GSimpleAction *action, GVariant *param, gpointer data);</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;G_END_DECLS</div><div class="ttc" id="remmina__main_8h_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01184">remmina_main.c:1184</a></div></div>
+<a href="remmina__main_8h.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">#pragma once</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 &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="remmina__monitor_8h.html">remmina_monitor.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.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__string__array_8h.html">remmina_string_array.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"><a class="line" href="remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052"> 45</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_main_priv.html">_RemminaMainPriv</a> <a class="code" href="struct___remmina_main_priv.html">RemminaMainPriv</a>;</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="struct___remmina_main.html"> 47</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_main.html">_RemminaMain</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1"> 48</a></span>&#160; GtkBuilder * <a class="code" href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">builder</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2"> 49</a></span>&#160; GtkWindow * <a class="code" href="struct___remmina_main.html#a82aa6f22340fc4f3df185aba7b01afc2">window</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">/* Menu widgets */</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6"> 51</a></span>&#160; GtkMenu * <a class="code" href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">menu_popup</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec"> 52</a></span>&#160; GtkMenuButton * <a class="code" href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">menu_header_button</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62"> 53</a></span>&#160; GtkMenu * <a class="code" href="struct___remmina_main.html#a1575015519fedca001bb26e129331b62">menu_popup_full</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4"> 54</a></span>&#160; GtkRadioMenuItem * <a class="code" href="struct___remmina_main.html#a6288ed69d372d1047ce94c74e77e0fd4">menuitem_view_mode_list</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0"> 55</a></span>&#160; GtkRadioMenuItem * <a class="code" href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">menuitem_view_mode_tree</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a37436a0fbd3d64082192826328fe063a"> 56</a></span>&#160; GtkMenuItem * <a class="code" href="struct___remmina_main.html#a37436a0fbd3d64082192826328fe063a">menuitem_connection_quit</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">/* Button new */</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e"> 58</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#a4db5c4960c9dbe3e798528bacb31456e">button_new</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a641297035bda72ca18ffe13816a44b21"> 59</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#a641297035bda72ca18ffe13816a44b21">button_make_default</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">/* Search bar objects */</span></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72"> 61</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#acd8f3437eee668a2b8d905a16a16be72">search_toggle</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04"> 62</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04">switch_dark_mode</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7"> 63</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">view_toggle_button</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aa1e811e50525f5a74bb781f8c8a10670"> 64</a></span>&#160; GtkToggleButton * <a class="code" href="struct___remmina_main.html#aa1e811e50525f5a74bb781f8c8a10670">ustats_toggle</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd"> 65</a></span>&#160; GtkSearchBar * <a class="code" href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">search_bar</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">/* Quick connect objects */</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95"> 67</a></span>&#160; GtkBox * <a class="code" href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">box_quick_connect</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39"> 68</a></span>&#160; GtkComboBoxText * <a class="code" href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">combo_quick_connect_protocol</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095"> 69</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_main.html#ac2eff9c56cc7830bcf9ca4bfdf216095">entry_quick_connect_server</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aebb188bd83f8dcfb80cad10e43181774"> 70</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_main.html#aebb188bd83f8dcfb80cad10e43181774">button_quick_connect</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">/* Other widgets */</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced"> 72</a></span>&#160; GtkTreeView * <a class="code" href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">tree_files_list</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5"> 73</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">column_files_list_name</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc"> 74</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">column_files_list_group</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb"> 75</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">column_files_list_server</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48"> 76</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">column_files_list_plugin</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a"> 77</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#a1ffeff8198ae0dc7c2461001118fcc5a">column_files_list_date</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9"> 78</a></span>&#160; GtkTreeViewColumn * <a class="code" href="struct___remmina_main.html#ab743fa626843d8fbb669fbd01819aea9">column_files_list_notes</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2"> 79</a></span>&#160; GtkStatusbar * <a class="code" href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">statusbar_main</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f"> 80</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">network_icon</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0baa48aa1ed260cead7af434c3f69549"> 82</a></span>&#160; GtkAccelGroup * <a class="code" href="struct___remmina_main.html#a0baa48aa1ed260cead7af434c3f69549">accelgroup_shortcuts</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980"> 83</a></span>&#160; <a class="code" href="struct___remmina_main_priv.html">RemminaMainPriv</a> * <a class="code" href="struct___remmina_main.html#a45e6df8230d849a78e547fd542d76980">priv</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150"> 84</a></span>&#160; <a class="code" href="struct___remmina_monitor.html">RemminaMonitor</a> * <a class="code" href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">monitor</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;} <a class="code" href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">RemminaMain</a>;</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"><a class="line" href="struct___remmina_main_priv.html"> 87</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_main_priv.html">_RemminaMainPriv</a> {</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f"> 88</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">file_model</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c"> 89</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">file_model_filter</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd"> 90</a></span>&#160; GtkTreeModel * <a class="code" href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">file_model_sort</a>;</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"><a class="line" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f"> 92</a></span>&#160; gboolean <a class="code" href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">initialized</a>;</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"><a class="line" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">selected_filename</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d"> 95</a></span>&#160; gchar * <a class="code" href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">selected_name</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76"> 96</a></span>&#160; gboolean <a class="code" href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">override_view_file_mode_to_list</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a"> 97</a></span>&#160; <a class="code" href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a> * <a class="code" href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">expanded_group</a>;</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;G_BEGIN_DECLS</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"> 102</span>&#160;<span class="comment">/* Create the remminamain struct and the remmina main Remmina window */</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;GtkWidget *<a class="code" href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7">remmina_main_new</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">/* Get the current main GTK window or NULL if not initialized */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;GtkWindow *<a class="code" href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc">remmina_main_get_window</a>(<span class="keywordtype">void</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="keywordtype">void</span> <a class="code" href="remmina__main_8h.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="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8">remmina_main_destroy</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5">remmina_main_on_destroy_event</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5">remmina_main_save_before_destroy</a>(<span class="keywordtype">void</span>);</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;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a>(GtkMessageType msg, GtkButtonsType buttons, <span class="keyword">const</span> gchar* message);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ad99b9c0bf2fa8c166a8b4a09e06ffdf7">remmina_main_show_warning_dialog</a>(<span class="keyword">const</span> gchar *message);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b">remmina_main_on_action_application_dark_theme</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a">remmina_main_on_action_application_quit</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a6b30ed832369f3a7153aa63f98873c9d">remmina_main_on_action_connection_connect</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a52cc21537ff003b9d0fbdb9040c811af">remmina_main_on_action_connection_new</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a>(GSimpleAction *action, GVariant *param, gpointer data);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a>(GSimpleAction *action, GVariant *param, gpointer data);</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;G_END_DECLS</div><div class="ttc" id="remmina__main_8h_html_adf59ad5b0a0ef68e58bbea3701929efc"><div class="ttname"><a href="remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc">remmina_main_on_action_application_plugins</a></div><div class="ttdeci">void remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01183">remmina_main.c:1183</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="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="struct___remmina_main_html_a0995d06fd3cad6098f0ecfaca9ed616f"><div class="ttname"><a href="struct___remmina_main.html#a0995d06fd3cad6098f0ecfaca9ed616f">_RemminaMain::network_icon</a></div><div class="ttdeci">GtkWidget * network_icon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00080">remmina_main.h:80</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00793">remmina_main.c:793</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a95cedb0d631aacbd1b4a5ee1e10a40a5"><div class="ttname"><a href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy(void)</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00177">remmina_main.c:177</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_abcf8bd8ca57b389264ff9739a61efdc1"><div class="ttname"><a href="remmina__main_8h.html#abcf8bd8ca57b389264ff9739a61efdc1">remmina_main_on_action_connection_external_tools</a></div><div class="ttdeci">void remmina_main_on_action_connection_external_tools(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00792">remmina_main.c:792</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a95cedb0d631aacbd1b4a5ee1e10a40a5"><div class="ttname"><a href="remmina__main_8h.html#a95cedb0d631aacbd1b4a5ee1e10a40a5">remmina_main_save_before_destroy</a></div><div class="ttdeci">void remmina_main_save_before_destroy(void)</div><div class="ttdoc">Save the Remmina Main Window size and the expanded group before to close Remmina. ...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00176">remmina_main.c:176</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="struct___remmina_main_priv_html_a092aebd62ba9fe50c899e416361c1d00"><div class="ttname"><a href="struct___remmina_main_priv.html#a092aebd62ba9fe50c899e416361c1d00">_RemminaMainPriv::selected_filename</a></div><div class="ttdeci">gchar * selected_filename</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00094">remmina_main.h:94</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_aec4c4540e9463a45b22a5c0b9108bc6f"><div class="ttname"><a href="struct___remmina_main_priv.html#aec4c4540e9463a45b22a5c0b9108bc6f">_RemminaMainPriv::file_model</a></div><div class="ttdeci">GtkTreeModel * file_model</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00088">remmina_main.h:88</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a77d974da2ddd1ea7c87f8b9bb1eedda8"><div class="ttname"><a href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00190">remmina_main.c:190</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a77d974da2ddd1ea7c87f8b9bb1eedda8"><div class="ttname"><a href="remmina__main_8h.html#a77d974da2ddd1ea7c87f8b9bb1eedda8">remmina_main_destroy</a></div><div class="ttdeci">void remmina_main_destroy(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00189">remmina_main.c:189</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="remmina__main_8h_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01206">remmina_main.c:1206</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a7049d977154921f651cc1538f59c5b7a"><div class="ttname"><a href="remmina__main_8h.html#a7049d977154921f651cc1538f59c5b7a">remmina_main_on_action_help_homepage</a></div><div class="ttdeci">void remmina_main_on_action_help_homepage(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01205">remmina_main.c:1205</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_main_html_a37436a0fbd3d64082192826328fe063a"><div class="ttname"><a href="struct___remmina_main.html#a37436a0fbd3d64082192826328fe063a">_RemminaMain::menuitem_connection_quit</a></div><div class="ttdeci">GtkMenuItem * menuitem_connection_quit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00056">remmina_main.h:56</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a670425eaf7430854a172ee0f41c4e5e0"><div class="ttname"><a href="struct___remmina_main.html#a670425eaf7430854a172ee0f41c4e5e0">_RemminaMain::menuitem_view_mode_tree</a></div><div class="ttdeci">GtkRadioMenuItem * menuitem_view_mode_tree</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00055">remmina_main.h:55</a></div></div>
<div class="ttc" id="struct___remmina_main_html_aa2b3c232b59da2278215d446b93db0e5"><div class="ttname"><a href="struct___remmina_main.html#aa2b3c232b59da2278215d446b93db0e5">_RemminaMain::column_files_list_name</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00073">remmina_main.h:73</a></div></div>
<div class="ttc" id="struct___remmina_main_html"><div class="ttname"><a href="struct___remmina_main.html">_RemminaMain</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00047">remmina_main.h:47</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>
-<div class="ttc" id="remmina__main_8h_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01361">remmina_main.c:1361</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01230">remmina_main.c:1230</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00907">remmina_main.c:907</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a0c322c3136c4225d5f8d4cee318afce7"><div class="ttname"><a href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7">remmina_main_new</a></div><div class="ttdeci">G_BEGIN_DECLS 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>
-<div class="ttc" id="remmina__main_8h_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01143">remmina_main.c:1143</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_ab98d51c96a87fddaa2d5d6d4614bafa8"><div class="ttname"><a href="remmina__main_8h.html#ab98d51c96a87fddaa2d5d6d4614bafa8">remmina_main_on_action_expand</a></div><div class="ttdeci">void remmina_main_on_action_expand(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01350">remmina_main.c:1350</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a5db4436cc72b9d5ea3e498f8519efecc"><div class="ttname"><a href="remmina__main_8h.html#a5db4436cc72b9d5ea3e498f8519efecc">remmina_main_on_action_help_debug</a></div><div class="ttdeci">void remmina_main_on_action_help_debug(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01229">remmina_main.c:1229</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a44eb44c6391f53a19c6f1fdf9a39a8c1"><div class="ttname"><a href="remmina__main_8h.html#a44eb44c6391f53a19c6f1fdf9a39a8c1">remmina_main_on_action_connection_copy</a></div><div class="ttdeci">void remmina_main_on_action_connection_copy(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00906">remmina_main.c:906</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a0c322c3136c4225d5f8d4cee318afce7"><div class="ttname"><a href="remmina__main_8h.html#a0c322c3136c4225d5f8d4cee318afce7">remmina_main_new</a></div><div class="ttdeci">G_BEGIN_DECLS GtkWidget * remmina_main_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01551">remmina_main.c:1551</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a4b4f0bbdb9e487d6c3809e8a57dc1d1c"><div class="ttname"><a href="remmina__main_8h.html#a4b4f0bbdb9e487d6c3809e8a57dc1d1c">remmina_main_on_action_tools_import</a></div><div class="ttdeci">void remmina_main_on_action_tools_import(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01142">remmina_main.c:1142</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a912f2057752ad0779485c3303e3e9b04"><div class="ttname"><a href="struct___remmina_main.html#a912f2057752ad0779485c3303e3e9b04">_RemminaMain::switch_dark_mode</a></div><div class="ttdeci">GtkSwitch * switch_dark_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00062">remmina_main.h:62</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a0baa48aa1ed260cead7af434c3f69549"><div class="ttname"><a href="struct___remmina_main.html#a0baa48aa1ed260cead7af434c3f69549">_RemminaMain::accelgroup_shortcuts</a></div><div class="ttdeci">GtkAccelGroup * accelgroup_shortcuts</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00082">remmina_main.h:82</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a91f22c2834ac7f38d201d8d678f8c57b"><div class="ttname"><a href="remmina__main_8h.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__main_8h_html_a91f22c2834ac7f38d201d8d678f8c57b"><div class="ttname"><a href="remmina__main_8h.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#l01189">remmina_main.c:1189</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_ae1e1d579bdb2517bd0f86408b9d5f97c"><div class="ttname"><a href="struct___remmina_main_priv.html#ae1e1d579bdb2517bd0f86408b9d5f97c">_RemminaMainPriv::file_model_filter</a></div><div class="ttdeci">GtkTreeModel * file_model_filter</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00089">remmina_main.h:89</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a606c7e6dc78219e8e5536519db723a4d"><div class="ttname"><a href="struct___remmina_main_priv.html#a606c7e6dc78219e8e5536519db723a4d">_RemminaMainPriv::selected_name</a></div><div class="ttdeci">gchar * selected_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00095">remmina_main.h:95</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a0e6602776373cf6a198d249df6e87150"><div class="ttname"><a href="struct___remmina_main.html#a0e6602776373cf6a198d249df6e87150">_RemminaMain::monitor</a></div><div class="ttdeci">RemminaMonitor * monitor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00084">remmina_main.h:84</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00974">remmina_main.c:974</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01236">remmina_main.c:1236</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a10e574723222f5df9db456977e62a093"><div class="ttname"><a href="remmina__main_8h.html#a10e574723222f5df9db456977e62a093">remmina_main_on_action_connection_delete</a></div><div class="ttdeci">void remmina_main_on_action_connection_delete(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00973">remmina_main.c:973</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_aac0bb51159be042fecab0103e73a54dc"><div class="ttname"><a href="remmina__main_8h.html#aac0bb51159be042fecab0103e73a54dc">remmina_main_on_action_application_about</a></div><div class="ttdeci">void remmina_main_on_action_application_about(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01235">remmina_main.c:1235</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ab3be770af5f21758fa641b274ca967ec"><div class="ttname"><a href="struct___remmina_main.html#ab3be770af5f21758fa641b274ca967ec">_RemminaMain::menu_header_button</a></div><div class="ttdeci">GtkMenuButton * menu_header_button</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00052">remmina_main.h:52</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01664">remmina_main.c:1664</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01339">remmina_main.c:1339</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01016">remmina_main.c:1016</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8h.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01653">remmina_main.c:1653</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a9896df7a92402b5a61e58420235c515a"><div class="ttname"><a href="remmina__main_8h.html#a9896df7a92402b5a61e58420235c515a">remmina_main_on_action_search_toggle</a></div><div class="ttdeci">void remmina_main_on_action_search_toggle(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01328">remmina_main.c:1328</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a6ed9f6a588a2d9e3a6cf6884c8d07f92"><div class="ttname"><a href="remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92">remmina_main_on_action_application_preferences</a></div><div class="ttdeci">void remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01015">remmina_main.c:1015</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a2d6960ab62869638a77d2fe5bd72c7f6"><div class="ttname"><a href="struct___remmina_main.html#a2d6960ab62869638a77d2fe5bd72c7f6">_RemminaMain::menu_popup</a></div><div class="ttdeci">GtkMenu * menu_popup</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00051">remmina_main.h:51</a></div></div>
<div class="ttc" id="remmina__string__array_8h_html"><div class="ttname"><a href="remmina__string__array_8h.html">remmina_string_array.h</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a7a4eb201dd185ba606af5c486ef55e7f"><div class="ttname"><a href="struct___remmina_main_priv.html#a7a4eb201dd185ba606af5c486ef55e7f">_RemminaMainPriv::initialized</a></div><div class="ttdeci">gboolean initialized</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00092">remmina_main.h:92</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a35f10af8065b3b64ba6f26db60061d39"><div class="ttname"><a href="struct___remmina_main.html#a35f10af8065b3b64ba6f26db60061d39">_RemminaMain::combo_quick_connect_protocol</a></div><div class="ttdeci">GtkComboBoxText * combo_quick_connect_protocol</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00068">remmina_main.h:68</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a7b03d239c21141a202d0698492cfae95"><div class="ttname"><a href="struct___remmina_main.html#a7b03d239c21141a202d0698492cfae95">_RemminaMain::box_quick_connect</a></div><div class="ttdeci">GtkBox * box_quick_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00067">remmina_main.h:67</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a7db532834f4fd6360956cb0e2383b0fb"><div class="ttname"><a href="struct___remmina_main.html#a7db532834f4fd6360956cb0e2383b0fb">_RemminaMain::column_files_list_server</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_server</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00075">remmina_main.h:75</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01218">remmina_main.c:1218</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_aac3aa116a8d8b527f1aa61b7395b4b32"><div class="ttname"><a href="remmina__main_8h.html#aac3aa116a8d8b527f1aa61b7395b4b32">remmina_main_on_action_help_community</a></div><div class="ttdeci">void remmina_main_on_action_help_community(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01217">remmina_main.c:1217</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="struct___remmina_main_html_acacd90f3e6df6a864154edba01464ae2"><div class="ttname"><a href="struct___remmina_main.html#acacd90f3e6df6a864154edba01464ae2">_RemminaMain::statusbar_main</a></div><div class="ttdeci">GtkStatusbar * statusbar_main</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00079">remmina_main.h:79</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a4d2d08c3fed3f72ea7f4c0600fec7ed5"><div class="ttname"><a href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5">remmina_main_on_destroy_event</a></div><div class="ttdeci">void remmina_main_on_destroy_event(void)</div><div class="ttdoc">Called when the remminamain-&gt;window widget is destroyed (glade event handler) </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00245">remmina_main.c:245</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a4d2d08c3fed3f72ea7f4c0600fec7ed5"><div class="ttname"><a href="remmina__main_8h.html#a4d2d08c3fed3f72ea7f4c0600fec7ed5">remmina_main_on_destroy_event</a></div><div class="ttdeci">void remmina_main_on_destroy_event(void)</div><div class="ttdoc">Called when the remminamain-&gt;window widget is destroyed (glade event handler) </div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00244">remmina_main.c:244</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a8e21f782dd6e0a6d80f0f622898b2a48"><div class="ttname"><a href="struct___remmina_main.html#a8e21f782dd6e0a6d80f0f622898b2a48">_RemminaMain::column_files_list_plugin</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_plugin</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00076">remmina_main.h:76</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="struct___remmina_main_html_ab7c6aebff1b06ef97c36bfa9d360b0c1"><div class="ttname"><a href="struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1">_RemminaMain::builder</a></div><div class="ttdeci">GtkBuilder * builder</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00048">remmina_main.h:48</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html"><div class="ttname"><a href="struct___remmina_main_priv.html">_RemminaMainPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00087">remmina_main.h:87</a></div></div>
<div class="ttc" id="struct___remmina_main_html_aebb188bd83f8dcfb80cad10e43181774"><div class="ttname"><a href="struct___remmina_main.html#aebb188bd83f8dcfb80cad10e43181774">_RemminaMain::button_quick_connect</a></div><div class="ttdeci">GtkButton * button_quick_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00070">remmina_main.h:70</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01155">remmina_main.c:1155</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a3948142732379a3d165f3b0b4d5f5abc"><div class="ttname"><a href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc">remmina_main_get_window</a></div><div class="ttdeci">GtkWindow * remmina_main_get_window(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01645">remmina_main.c:1645</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00811">remmina_main.c:811</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_ab203476099a5ad6e889f91c8e05d577d"><div class="ttname"><a href="remmina__main_8h.html#ab203476099a5ad6e889f91c8e05d577d">remmina_main_on_action_tools_export</a></div><div class="ttdeci">void remmina_main_on_action_tools_export(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01154">remmina_main.c:1154</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a3948142732379a3d165f3b0b4d5f5abc"><div class="ttname"><a href="remmina__main_8h.html#a3948142732379a3d165f3b0b4d5f5abc">remmina_main_get_window</a></div><div class="ttdeci">GtkWindow * remmina_main_get_window(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01634">remmina_main.c:1634</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_abf51d42fa2c5ce84164b5514b4634229"><div class="ttname"><a href="remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229">remmina_main_on_action_application_mpchange</a></div><div class="ttdeci">void remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00810">remmina_main.c:810</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a81f987e527d521be54aaf3f46dfe7ced"><div class="ttname"><a href="struct___remmina_main.html#a81f987e527d521be54aaf3f46dfe7ced">_RemminaMain::tree_files_list</a></div><div class="ttdeci">GtkTreeView * tree_files_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00072">remmina_main.h:72</a></div></div>
<div class="ttc" id="struct___remmina_main_html_ae3c2c0b9855bb44b5b9a27a3178d32e7"><div class="ttname"><a href="struct___remmina_main.html#ae3c2c0b9855bb44b5b9a27a3178d32e7">_RemminaMain::view_toggle_button</a></div><div class="ttdeci">GtkToggleButton * view_toggle_button</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00063">remmina_main.h:63</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a56ac6ffe61c0d3663ebc6b26e65a8cbc"><div class="ttname"><a href="struct___remmina_main.html#a56ac6ffe61c0d3663ebc6b26e65a8cbc">_RemminaMain::column_files_list_group</a></div><div class="ttdeci">GtkTreeViewColumn * column_files_list_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00074">remmina_main.h:74</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a467cf8ebc87ccdb68b9f88bce95c9f3a"><div class="ttname"><a href="struct___remmina_main_priv.html#a467cf8ebc87ccdb68b9f88bce95c9f3a">_RemminaMainPriv::expanded_group</a></div><div class="ttdeci">RemminaStringArray * expanded_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00097">remmina_main.h:97</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a0b4ec1e78b79adaa180a385ac50c20d6"><div class="ttname"><a href="remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6">remmina_main_on_action_application_news</a></div><div class="ttdeci">void remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01242">remmina_main.c:1242</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00943">remmina_main.c:943</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_ad99b9c0bf2fa8c166a8b4a09e06ffdf7"><div class="ttname"><a href="remmina__main_8h.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_8h_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01044">remmina_main.c:1044</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_adfbfc580d25b58d09770a7d33ffe03cc"><div class="ttname"><a href="remmina__main_8h.html#adfbfc580d25b58d09770a7d33ffe03cc">remmina_main_on_action_connection_edit</a></div><div class="ttdeci">void remmina_main_on_action_connection_edit(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l00942">remmina_main.c:942</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_ad99b9c0bf2fa8c166a8b4a09e06ffdf7"><div class="ttname"><a href="remmina__main_8h.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#l01663">remmina_main.c:1663</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a05dbb6ce820f3a137949b919d0efa6a1"><div class="ttname"><a href="remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1">remmina_main_on_action_application_default</a></div><div class="ttdeci">void remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01043">remmina_main.c:1043</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a87a88c763f806d76fdee5a233c3ad7cd"><div class="ttname"><a href="struct___remmina_main_priv.html#a87a88c763f806d76fdee5a233c3ad7cd">_RemminaMainPriv::file_model_sort</a></div><div class="ttdeci">GtkTreeModel * file_model_sort</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00090">remmina_main.h:90</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a5ae0372dafe41f96a09097c07d1b270a"><div class="ttname"><a href="remmina__main_8h.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="remmina__main_8h_html_a6b30ed832369f3a7153aa63f98873c9d"><div class="ttname"><a href="remmina__main_8h.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="remmina__main_8h_html_a5ae0372dafe41f96a09097c07d1b270a"><div class="ttname"><a href="remmina__main_8h.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#l01646">remmina_main.c:1646</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a6b30ed832369f3a7153aa63f98873c9d"><div class="ttname"><a href="remmina__main_8h.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#l00764">remmina_main.c:764</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__main_8h_html_a5445e5568a6fc04d08b620829a59334a"><div class="ttname"><a href="remmina__main_8h.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="remmina__main_8h_html_a5445e5568a6fc04d08b620829a59334a"><div class="ttname"><a href="remmina__main_8h.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#l01069">remmina_main.c:1069</a></div></div>
<div class="ttc" id="struct___remmina_main_html_aa1e811e50525f5a74bb781f8c8a10670"><div class="ttname"><a href="struct___remmina_main.html#aa1e811e50525f5a74bb781f8c8a10670">_RemminaMain::ustats_toggle</a></div><div class="ttdeci">GtkToggleButton * ustats_toggle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00064">remmina_main.h:64</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a52cc21537ff003b9d0fbdb9040c811af"><div class="ttname"><a href="remmina__main_8h.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_8h_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01333">remmina_main.c:1333</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a52cc21537ff003b9d0fbdb9040c811af"><div class="ttname"><a href="remmina__main_8h.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#l00847">remmina_main.c:847</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a0edcc1d7dc3adcbb7bb36aa0f62dec3a"><div class="ttname"><a href="remmina__main_8h.html#a0edcc1d7dc3adcbb7bb36aa0f62dec3a">remmina_main_on_action_collapse</a></div><div class="ttdeci">void remmina_main_on_action_collapse(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01322">remmina_main.c:1322</a></div></div>
<div class="ttc" id="struct___remmina_main_html_a641297035bda72ca18ffe13816a44b21"><div class="ttname"><a href="struct___remmina_main.html#a641297035bda72ca18ffe13816a44b21">_RemminaMain::button_make_default</a></div><div class="ttdeci">GtkButton * button_make_default</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00059">remmina_main.h:59</a></div></div>
-<div class="ttc" id="remmina__main_8h_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01224">remmina_main.c:1224</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a2704d643ee15702a84a1c76219dd5277"><div class="ttname"><a href="remmina__main_8h.html#a2704d643ee15702a84a1c76219dd5277">remmina_main_on_action_help_donations</a></div><div class="ttdeci">void remmina_main_on_action_help_donations(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01223">remmina_main.c:1223</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="struct___remmina_main_html_aecb54d7c3dd1e86a16e24ea2e00d4ddd"><div class="ttname"><a href="struct___remmina_main.html#aecb54d7c3dd1e86a16e24ea2e00d4ddd">_RemminaMain::search_bar</a></div><div class="ttdeci">GtkSearchBar * search_bar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00065">remmina_main.h:65</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__main_8h_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01212">remmina_main.c:1212</a></div></div>
+<div class="ttc" id="remmina__main_8h_html_a0c32fe66988056b353220128611b9116"><div class="ttname"><a href="remmina__main_8h.html#a0c32fe66988056b353220128611b9116">remmina_main_on_action_help_wiki</a></div><div class="ttdeci">void remmina_main_on_action_help_wiki(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01211">remmina_main.c:1211</a></div></div>
<div class="ttc" id="struct___remmina_main_priv_html_a0307278dd7770ab490f4687f2eb00e76"><div class="ttname"><a href="struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76">_RemminaMainPriv::override_view_file_mode_to_list</a></div><div class="ttdeci">gboolean override_view_file_mode_to_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8h_source.html#l00096">remmina_main.h:96</a></div></div>
<div class="ttc" id="remmina__main_8h_html_ad17d9a48f2b3f84e17baa91104bc6cb1"><div class="ttname"><a href="remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1">RemminaMain</a></div><div class="ttdeci">struct _RemminaMain RemminaMain</div></div>
<div class="ttc" id="remmina__file_8h_html"><div class="ttname"><a href="remmina__file_8h.html">remmina_file.h</a></div></div>
diff --git a/public/remmina__mpchange_8c_source.html b/public/remmina__mpchange_8c_source.html
index 0aad75fe4..8adc355e8 100644
--- a/public/remmina__mpchange_8c_source.html
+++ b/public/remmina__mpchange_8c_source.html
@@ -93,7 +93,7 @@ $(document).ready(function(){initNavTree('remmina__mpchange_8c_source.html','');
<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>
+<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#l01634">remmina_main.c:1634</a></div></div>
<div class="ttc" id="structmpchanger__params_html_a73f1024c68afe4f35bea5608188c52bc"><div class="ttname"><a href="structmpchanger__params.html#a73f1024c68afe4f35bea5608188c52bc">mpchanger_params::eGatewayPassword2</a></div><div class="ttdeci">GtkEntry * eGatewayPassword2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00062">remmina_mpchange.c:62</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__mpchange_8c_html_a5d76b81b0ad4c19007a781d4edb8181fa8843686a2923021b5ded06faeaaf66f1"><div class="ttname"><a href="remmina__mpchange_8c.html#a5d76b81b0ad4c19007a781d4edb8181fa8843686a2923021b5ded06faeaaf66f1">NUM_COLS</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__mpchange_8c_source.html#l00082">remmina_mpchange.c:82</a></div></div>
diff --git a/public/remmina__plugin__manager_8c_source.html b/public/remmina__plugin__manager_8c_source.html
index 8ff407a99..f3aec2b77 100644
--- a/public/remmina__plugin__manager_8c_source.html
+++ b/public/remmina__plugin__manager_8c_source.html
@@ -94,20 +94,20 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_a95088334da86faf9520383629fff48af"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a></div><div class="ttdeci">void remmina_protocol_widget_set_error(RemminaProtocolWidget *gp, const gchar *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01445">remmina_protocol_widget.c:1445</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_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#l00631">remmina_plugin_manager.c:631</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__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#l01054">remmina_pref.c:1054</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#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#l00082">remmina_plugin_manager.c:82</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>
<div class="ttc" id="struct___remmina_language_wrapper_plugin_html"><div class="ttname"><a href="struct___remmina_language_wrapper_plugin.html">_RemminaLanguageWrapperPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00150">plugin.h:150</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>
+<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#l01634">remmina_main.c:1634</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_aaf355ea7103fc57a4cbc7b815cde2995"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01384">remmina_protocol_widget.c:1384</a></div></div>
<div class="ttc" id="remmina__plugin__native_8c_html_ae60c5371a41a83ef94c6a2b3dc8c9520"><div class="ttname"><a href="remmina__plugin__native_8c.html#ae60c5371a41a83ef94c6a2b3dc8c9520">remmina_plugin_native_load</a></div><div class="ttdeci">gboolean remmina_plugin_native_load(RemminaPluginService *service, const char *name)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__native_8c_source.html#l00060">remmina_plugin_native.c:60</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a1a5e6eeb6e116b5768d5e0c02544149d"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a1a5e6eeb6e116b5768d5e0c02544149d">remmina_plugin_manager_loader_supported</a></div><div class="ttdeci">gboolean remmina_plugin_manager_loader_supported(const char *filetype)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00433">remmina_plugin_manager.c:433</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab4c6435ef92e34a94270069ce1861907"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a></div><div class="ttdeci">gint remmina_protocol_widget_get_profile_remote_width(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01355">remmina_protocol_widget.c:1355</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01111">remmina_pref.c:1111</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01075">remmina_pref.c:1075</a></div></div>
<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="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="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>
@@ -134,7 +134,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<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#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="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#l01063">remmina_pref.c:1063</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>
<div class="ttc" id="remmina__plugin__manager_8c_html_afce14b101da527ada9b44a4503e91e07"><div class="ttname"><a href="remmina__plugin__manager_8c.html#afce14b101da527ada9b44a4503e91e07">remmina_plugin_manager_get_export_file_handler</a></div><div class="ttdeci">RemminaFilePlugin * remmina_plugin_manager_get_export_file_handler(RemminaFile *remminafile)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00589">remmina_plugin_manager.c:589</a></div></div>
@@ -150,7 +150,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_a5ec62969da54155e24edcb1d998f93f7"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a></div><div class="ttdeci">RemminaScaleMode remmina_protocol_widget_get_current_scale_mode(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01408">remmina_protocol_widget.c:1408</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_aa88afa1e3f04974974a8be324b0a930e"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a></div><div class="ttdeci">void remmina_protocol_widget_update_align(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00408">remmina_protocol_widget.c:408</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_aa674c14f3a46dd5eb6b53d6f8ce6bd31"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_authx509(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01751">remmina_protocol_widget.c:1751</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01141">remmina_pref.c:1141</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</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="struct___remmina_plugin_html_a4ac66b7ebefb9bd8167737eb1af83cde"><div class="ttname"><a href="struct___remmina_plugin.html#a4ac66b7ebefb9bd8167737eb1af83cde">_RemminaPlugin::description</a></div><div class="ttdeci">const gchar * description</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00059">plugin.h:59</a></div></div>
<div class="ttc" id="struct___remmina_plugin_html_aecdad5d7ff5bdfbf0ce80b4b73f65099"><div class="ttname"><a href="struct___remmina_plugin.html#aecdad5d7ff5bdfbf0ce80b4b73f65099">_RemminaPlugin::version</a></div><div class="ttdeci">const gchar * version</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00061">plugin.h:61</a></div></div>
@@ -160,20 +160,20 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="remmina__protocol__widget_8c_html_a15368afcbeb770f8cf25941bd49e7b54"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a></div><div class="ttdeci">void remmina_protocol_widget_set_display(RemminaProtocolWidget *gp, gint display)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01342">remmina_protocol_widget.c:1342</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a41b62f211a8a8e960bc80aa1ba6b0380"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a></div><div class="ttdeci">void remmina_protocol_widget_set_width(RemminaProtocolWidget *gp, gint width)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01390">remmina_protocol_widget.c:1390</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a634fadd9871f76bc60c3da0aa95e719c"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a634fadd9871f76bc60c3da0aa95e719c">remmina_plugin_manager_show_for_each</a></div><div class="ttdeci">static gboolean remmina_plugin_manager_show_for_each(RemminaPlugin *plugin, GtkListStore *store)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00505">remmina_plugin_manager.c:505</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</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__pref_8c_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01069">remmina_pref.c:1069</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_ab224a0f643d291f86ede54e373bd0a6f"><div class="ttname"><a href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a></div><div class="ttdeci">const gchar * remmina_protocol_widget_get_name(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01378">remmina_protocol_widget.c:1378</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a06a7e80f6a756ec12b2ac12ea3d5f206"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a06a7e80f6a756ec12b2ac12ea3d5f206">get_filename_ext</a></div><div class="ttdeci">const char * get_filename_ext(const char *filename)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00312">remmina_plugin_manager.c:312</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a278e13b53a4fdb65498e00e908edb98d"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a></div><div class="ttdeci">void remmina_protocol_widget_panel_show_listen(RemminaProtocolWidget *gp, gint port)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01939">remmina_protocol_widget.c:1939</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_aedec4e9cf18d99a559aa51065c2bc276"><div class="ttname"><a href="remmina__plugin__manager_8c.html#aedec4e9cf18d99a559aa51065c2bc276">remmina_plugin_manager_show</a></div><div class="ttdeci">void remmina_plugin_manager_show(GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00516">remmina_plugin_manager.c:516</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<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__pref_8c_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01038">remmina_pref.c:1038</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01002">remmina_pref.c:1002</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a1cae52cad394f317c712eb4fd709d261"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a></div><div class="ttdeci">void remmina_protocol_widget_signal_connection_closed(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00359">remmina_protocol_widget.c:359</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a3996819fdb2c833f3c64c2ad399e5f10"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a3996819fdb2c833f3c64c2ad399e5f10">remmina_plugin_manager_service</a></div><div class="ttdeci">RemminaPluginService remmina_plugin_manager_service</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00174">remmina_plugin_manager.c:174</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a719ce18a83ed7ecb3388f179a8590c10"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a719ce18a83ed7ecb3388f179a8590c10">remmina_plugin_type_name</a></div><div class="ttdeci">static const gchar * remmina_plugin_type_name[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00073">remmina_plugin_manager.c:73</a></div></div>
-<div class="ttc" id="remmina__main_8c_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01664">remmina_main.c:1664</a></div></div>
+<div class="ttc" id="remmina__main_8c_html_ab2a1a54320992fb796850ffbd6a63589"><div class="ttname"><a href="remmina__main_8c.html#ab2a1a54320992fb796850ffbd6a63589">remmina_main_show_dialog</a></div><div class="ttdeci">void remmina_main_show_dialog(GtkMessageType msg, GtkButtonsType buttons, const gchar *message)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__main_8c_source.html#l01653">remmina_main.c:1653</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00456">remmina_protocol_widget.c:456</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="struct___remmina_protocol_feature_html_a1826baafd2d7b5dc8a009ef4fcad77e9"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">_RemminaProtocolFeature::type</a></div><div class="ttdeci">RemminaProtocolFeatureType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00073">types.h:73</a></div></div>
@@ -202,7 +202,7 @@ $(document).ready(function(){initNavTree('remmina__plugin__manager_8c_source.htm
<div class="ttc" id="struct___remmina_protocol_setting_html"><div class="ttname"><a href="struct___remmina_protocol_setting.html">_RemminaProtocolSetting</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00116">types.h:116</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00102">types.h:102</a></div></div>
<div class="ttc" id="remmina__file_8c_html_a5e421ba636d34e21bba5ece463e98892"><div class="ttname"><a href="remmina__file_8c.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__pref_8c_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01048">remmina_pref.c:1048</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
<div class="ttc" id="rcw_8h_html"><div class="ttname"><a href="rcw_8h.html">rcw.h</a></div></div>
<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>
diff --git a/public/remmina__pref_8c.html b/public/remmina__pref_8c.html
index a7d39ca55..dee216270 100644
--- a/public/remmina__pref_8c.html
+++ b/public/remmina__pref_8c.html
@@ -185,7 +185,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00955">955</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00919">919</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -205,7 +205,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01012">1012</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00976">976</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.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__pref_8c_source.html#l01179">1179</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01143">1143</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -370,7 +370,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00993">993</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00957">957</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -390,7 +390,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01090">1090</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01054">1054</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -410,7 +410,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01099">1099</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01063">1063</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -430,7 +430,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01105">1105</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01069">1069</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -450,7 +450,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01129">1129</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01093">1093</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -470,7 +470,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01117">1117</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01081">1081</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -490,7 +490,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01123">1123</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01087">1087</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -510,7 +510,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01135">1135</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01099">1099</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -530,7 +530,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01111">1111</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01075">1075</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -550,7 +550,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01165">1165</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01129">1129</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -569,7 +569,6 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>RMNEWS_ENABLE_NEWS is equal to 0 (FALSE) when compiled with -DWiTH_NEWS=OFF, otherwise is value is 1 (TRUE), that is the default value</p>
<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00219">219</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
@@ -619,7 +618,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00789">789</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00760">760</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -649,7 +648,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01048">1048</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01012">1012</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -669,7 +668,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01038">1038</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01002">1002</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -689,7 +688,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01067">1067</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01031">1031</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -709,7 +708,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00799">799</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00770">770</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -739,7 +738,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01141">1141</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01105">1105</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__pref_8c_source.html b/public/remmina__pref_8c_source.html
index e832b5da4..3e6bbe549 100644
--- a/public/remmina__pref_8c_source.html
+++ b/public/remmina__pref_8c_source.html
@@ -86,17 +86,17 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="title">remmina_pref.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__pref_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;<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;string.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 &lt;sys/time.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;sys/utsname.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 &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</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">#include &quot;<a class="code" href="remmina__sodium_8h.html">remmina_sodium.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"> 51</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="l00052"></a><span class="lineno"> 52</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="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__log_8h.html">remmina_log.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__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;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290"> 57</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a> = <span class="stringliteral">&quot;640x480,800x600,1024x768,1152x864,1280x960,1400x1050&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd"> 58</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a> = <span class="stringliteral">&quot;Send hello world§hello world\\n&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743"> 60</a></span>&#160;gchar *<a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46"> 61</a></span>&#160;<span class="keyword">static</span> GHashTable *<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a> = NULL;</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;<span class="comment">/* We could customize this further if there are more requirements */</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44"> 64</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a> = <span class="stringliteral">&quot;# Please check gdk/gdkkeysyms.h for a full list of all key names or hex key values\n&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&quot;[Map Meta Keys]\n&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="stringliteral">&quot;Super_L = Meta_L\n&quot;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="stringliteral">&quot;Super_R = Meta_R\n&quot;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="stringliteral">&quot;Meta_L = Super_L\n&quot;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="stringliteral">&quot;Meta_R = Super_R\n&quot;</span>;</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"><a class="line" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c"> 72</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c">remmina_pref_gen_secret</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; guchar s[32];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; gint i;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; gsize length;</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="keywordflow">for</span> (i = 0; i &lt; 32; i++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; s[i] = (guchar)(randombytes_uniform(257));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = g_base64_encode(s, 32);</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"> 85</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, 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; g_key_file_free(gkeyfile);</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"><a class="line" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3"> 94</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(<span class="keyword">const</span> gchar *str)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; guint k;</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> (!str)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> 0;</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"> 102</span>&#160; k = gdk_keyval_from_name(str);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (!k)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (sscanf(str, <span class="stringliteral">&quot;%x&quot;</span>, &amp;k) &lt; 1)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; k = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> k;</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__pref_8c.html#aed7f3859d4306419932df15131987355"> 109</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355">remmina_pref_init_keymap</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; gchar **groups;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; gchar **gptr;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; gchar **keys;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; gchar **kptr;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; gsize nkeys;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; g_autofree gchar *value = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; guint *table;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; guint *tableptr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; guint k1, k2;</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"> 123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_hash_table_destroy(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a> = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</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; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a>, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_data(gkeyfile, <a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a>, strlen(<a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a>), G_KEY_FILE_NONE,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; NULL)) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_print(<span class="stringliteral">&quot;Failed to initialize keymap table\n&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</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;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; groups = g_key_file_get_groups(gkeyfile, NULL);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; gptr = groups;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">while</span> (*gptr) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; keys = g_key_file_get_keys(gkeyfile, *gptr, &amp;nkeys, NULL);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; table = g_new0(guint, nkeys * 2 + 1);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; g_hash_table_insert(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, g_strdup(*gptr), table);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; kptr = keys;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; tableptr = table;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span> (*kptr) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; k1 = <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(*kptr);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (k1) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; value = g_key_file_get_string(gkeyfile, *gptr, *kptr, NULL);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; k2 = <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(value);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; *tableptr++ = k1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; *tableptr++ = k2;</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; kptr++;</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; g_strfreev(keys);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gptr++;</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; g_strfreev(groups);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; g_key_file_free(gkeyfile);</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="l00164"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81"> 164</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_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="l00165"></a><span class="lineno"> 165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">/* We don’t overwrite the target if it exists, because overwrite is not set */</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</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="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; g_object_unref(dst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; g_object_unref(src);</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"> 173</span>&#160; <span class="keywordflow">return</span> ok;</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;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218"> 176</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(GKeyFile *gkeyfile, <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> *color_pref)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> * name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">char</span> ** setting;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">char</span> * fallback;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; } colors[] = {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; { <span class="stringliteral">&quot;background&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; { <span class="stringliteral">&quot;cursor&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; { <span class="stringliteral">&quot;cursor_foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; { <span class="stringliteral">&quot;highlight&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; { <span class="stringliteral">&quot;highlight_foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; { <span class="stringliteral">&quot;colorBD&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; { <span class="stringliteral">&quot;foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; { <span class="stringliteral">&quot;color0&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>, <span class="stringliteral">&quot;#20111b&quot;</span> },</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; { <span class="stringliteral">&quot;color1&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>, <span class="stringliteral">&quot;#be100e&quot;</span> },</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; { <span class="stringliteral">&quot;color2&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>, <span class="stringliteral">&quot;#858162&quot;</span> },</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; { <span class="stringliteral">&quot;color3&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>, <span class="stringliteral">&quot;#eaa549&quot;</span> },</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; { <span class="stringliteral">&quot;color4&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>, <span class="stringliteral">&quot;#426a79&quot;</span> },</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; { <span class="stringliteral">&quot;color5&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>, <span class="stringliteral">&quot;#97522c&quot;</span> },</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; { <span class="stringliteral">&quot;color6&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>, <span class="stringliteral">&quot;#989a9c&quot;</span> },</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; { <span class="stringliteral">&quot;color7&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>, <span class="stringliteral">&quot;#968c83&quot;</span> },</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; { <span class="stringliteral">&quot;color8&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>, <span class="stringliteral">&quot;#5e5252&quot;</span> },</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; { <span class="stringliteral">&quot;color9&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>, <span class="stringliteral">&quot;#be100e&quot;</span> },</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; { <span class="stringliteral">&quot;color10&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>, <span class="stringliteral">&quot;#858162&quot;</span> },</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; { <span class="stringliteral">&quot;color11&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>, <span class="stringliteral">&quot;#eaa549&quot;</span> },</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; { <span class="stringliteral">&quot;color12&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>, <span class="stringliteral">&quot;#426a79&quot;</span> },</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; { <span class="stringliteral">&quot;color13&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>, <span class="stringliteral">&quot;#97522c&quot;</span> },</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; { <span class="stringliteral">&quot;color14&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>, <span class="stringliteral">&quot;#989a9c&quot;</span> },</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; { <span class="stringliteral">&quot;color15&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; };</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; <span class="keywordtype">int</span> i;</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">for</span> (i = 0; i &lt; (<span class="keyword">sizeof</span>(colors) / <span class="keyword">sizeof</span>(colors[0])); i++) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, colors[i].name, NULL))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; *colors[i].setting = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, colors[i].name,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; NULL);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *colors[i].setting = colors[i].fallback;</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;}</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"><a class="line" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd"> 219</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; gchar *remmina_dir;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> gchar *filename = <span class="stringliteral">&quot;remmina.pref&quot;</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">const</span> gchar *colors_filename = <span class="stringliteral">&quot;remmina.colors&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; g_autofree gchar *<a class="code" href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a> = NULL;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; GDir *dir;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">const</span> gchar *legacy = <span class="stringliteral">&quot;.remmina&quot;</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">int</span> i;</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; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">/* Create the XDG_CONFIG_HOME directory */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; g_mkdir_with_parents(remmina_dir, 0750);</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"> 235</span>&#160; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">/* Legacy ~/.remmina we copy the existing remmina.pref file inside</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * XDG_CONFIG_HOME */</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_home_dir(), legacy, NULL);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_do_copy</a>(</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</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; <span class="comment">/* /usr/local/etc/remmina */</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> gchar *<span class="keyword">const</span> *dirs = g_get_system_config_dirs();</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; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; remmina_dir = 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="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">while</span> ((filename = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_do_copy</a>(</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</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; g_free(remmina_dir), remmina_dir = 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"> 265</span>&#160; <span class="comment">/* The last case we use the home ~/.config/remmina */</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (remmina_dir != NULL)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</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; <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a> = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.pref&quot;</span>, remmina_dir);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">/* remmina.colors */</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; remmina_colors_file = g_strdup_printf(<span class="stringliteral">&quot;%s/%s&quot;</span>, remmina_dir, colors_filename);</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; <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a> = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.keymap&quot;</span>, remmina_dir);</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; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, NULL))</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, NULL);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, NULL))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, NULL);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = TRUE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, NULL))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, NULL);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, NULL))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, NULL);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = 300;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, NULL))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, NULL);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_strdup(<span class="stringliteral">&quot;&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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, NULL))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, NULL);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, NULL))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, NULL);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</span>, NULL))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</span>, NULL);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = 1;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, NULL))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, NULL);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, NULL))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, NULL);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, NULL))</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, NULL);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = TRUE;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, NULL))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, NULL);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> = <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a>;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, NULL))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, NULL);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</span>, NULL))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</span>, NULL);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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(<span class="stringliteral">&quot;&quot;</span>);</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"> 356</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, NULL))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, NULL);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, NULL))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = TRUE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = FALSE;</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">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, NULL))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, NULL);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, NULL);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = FALSE;</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">if</span> (<a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_searchbar&quot;</span>, NULL))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="stringliteral">&quot;hide_searchbar&quot;</span>, NULL);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = FALSE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</span>, NULL))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</span>, NULL);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, NULL))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, NULL);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = GDK_INTERP_HYPER;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, NULL);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, NULL))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, NULL);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</span>, NULL))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</span>, NULL);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</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="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, NULL))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, NULL);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = g_strdup(<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, NULL))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, NULL);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = g_strdup(<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, NULL))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a> = MAX(600, g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, NULL));</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a> = 600;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, NULL))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a> = MAX(400, g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, NULL));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a> = 400;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</span>, NULL))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</span>, NULL);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</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="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>, NULL))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; NULL);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</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> = 1;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, NULL))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</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> = 0;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, NULL))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</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> = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, NULL))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, NULL);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a> = FALSE;</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"> 463</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, NULL))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, NULL);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = DEFAULT_SSH_LOGLEVEL;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, NULL))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, NULL);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = TRUE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, NULL))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, NULL);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_strdup(<span class="stringliteral">&quot;&quot;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, NULL))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, NULL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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> = g_strdup(<span class="stringliteral">&quot;%G_%P_%N_%h&quot;</span>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, NULL)) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_get_user_special_dir(G_USER_DIRECTORY_PICTURES);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</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#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> == NULL)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_get_home_dir();</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;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, NULL))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = g_strdup(<span class="stringliteral">&quot;remmina_%p_%h_%Y%m%d-%H%M%S&quot;</span>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, NULL))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, NULL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = DEFAULT_SSH_PARSECONFIG;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, NULL))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = DEFAULT_SSHTUNNEL_PORT;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, NULL))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, NULL);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = SSH_SOCKET_TCP_KEEPIDLE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, NULL))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, NULL);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, NULL))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, NULL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span></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#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = SSH_SOCKET_TCP_KEEPCNT;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, NULL))</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, NULL);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = SSH_SOCKET_TCP_USER_TIMEOUT;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, NULL))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, NULL);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, NULL))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, NULL);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>, NULL))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; NULL);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a> = FALSE;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, NULL))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = FALSE;</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> (<a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;dark_theme&quot;</span>, NULL))</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;dark_theme&quot;</span>, NULL);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</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> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;list_refresh_workaround&quot;</span>, NULL))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;list_refresh_workaround&quot;</span>, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, NULL))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, NULL);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = FALSE;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, NULL))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, NULL);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = <span class="stringliteral">&quot;#00ff00&quot;</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, NULL))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, NULL);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = 10;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, NULL))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, NULL);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = 0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, NULL))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = 0;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, NULL))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, NULL);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a>;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, NULL))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, NULL);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 10;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, NULL))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, NULL);</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="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = GDK_KEY_Control_R;</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"> 606</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>, NULL))</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>,</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; NULL);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = GDK_KEY_f;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>, NULL))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>,</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; NULL);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = GDK_KEY_1;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>, NULL))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; NULL);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = GDK_KEY_Right;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>, NULL))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>,</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; NULL);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = GDK_KEY_Left;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, NULL))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, NULL);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = GDK_KEY_s;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, NULL))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, NULL);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = GDK_KEY_m;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, NULL))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, NULL);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = GDK_KEY_Page_Up;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, NULL))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, NULL);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = GDK_KEY_Control_R;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, NULL))</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, NULL);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = GDK_KEY_F9;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, NULL))</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, NULL);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = GDK_KEY_F12;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>, NULL))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; NULL);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = GDK_KEY_F4;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; NULL);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = GDK_KEY_t;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, NULL))</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, NULL);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = NULL;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;uid&quot;</span>, NULL))</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;uid&quot;</span>, NULL);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a> = NULL;</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">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, NULL))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = 0;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>, NULL))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; NULL);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, NULL))</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, NULL);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = 512;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>, NULL))</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>,</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; NULL);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = GDK_KEY_c;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>, NULL))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>,</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; NULL);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = GDK_KEY_v;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>, NULL))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; NULL);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">else</span></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#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = GDK_KEY_a;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>, NULL))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; NULL);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = GDK_KEY_Page_Up;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>, NULL))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; NULL);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = GDK_KEY_Page_Down;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>, NULL))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; NULL);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = GDK_KEY_g;</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;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(gkeyfile, &amp;<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (RMNEWS_ENABLE_NEWS == 0)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a> = RMNEWS_ENABLE_NEWS;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_news_permitted&quot;</span>, NULL))</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_news_permitted&quot;</span>, NULL);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a> = RMNEWS_ENABLE_NEWS;</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;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_last_get&quot;</span>, NULL)) {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</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> = g_key_file_get_int64(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_last_get&quot;</span>, NULL);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;periodic_rmnews_last_get set to %ld&quot;</span>, <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>);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</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="l00753"></a><span class="lineno"> 753</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;periodic_rmnews_last_get set to 0&quot;</span>);</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;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_get_count&quot;</span>, NULL))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</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> = g_key_file_get_int64(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_get_count&quot;</span>, NULL);</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; <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="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_uuid_prefix&quot;</span>, NULL))</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_uuid_prefix&quot;</span>, NULL);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a> = NULL;</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="comment">/* If we have a color scheme file, we switch to it, GIO will merge it in the</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="comment"> * remmina.pref file */</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_colors_file, G_FILE_TEST_IS_REGULAR)) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; g_key_file_load_from_file(gkeyfile, remmina_colors_file, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; g_remove(remmina_colors_file);</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;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, NULL)) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;ignore-tls-errors&quot;</span>, 1);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;enable-plugins&quot;</span>, 1);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; }</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; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</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#a99a34af002da68036758fab3ceb08259">secret</a> == NULL)</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c">remmina_pref_gen_secret</a>();</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355">remmina_pref_init_keymap</a>();</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c"> 789</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>(<span class="keywordtype">void</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">if</span> (access(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, W_OK) == 0)</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">return</span> FALSE;</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"><a class="line" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f"> 799</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>() == FALSE) {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; g_debug(<span class="stringliteral">&quot;remmina.pref is not writable, returning&quot;</span>);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; gsize length;</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; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, <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="l00818"></a><span class="lineno"> 818</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (g_key_file_remove_key (gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL))</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;use_master_password removed…&quot;</span>);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; REMMINA_INFO(<span class="stringliteral">&quot;use_master_password already migrated&quot;</span>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, FALSE);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, 0);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, FALSE);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, FALSE);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</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="l00841"></a><span class="lineno"> 841</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a>);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, <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="l00846"></a><span class="lineno"> 846</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</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>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, <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="l00850"></a><span class="lineno"> 850</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_searchbar&quot;</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="l00852"></a><span class="lineno"> 852</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</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="l00853"></a><span class="lineno"> 853</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</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="l00859"></a><span class="lineno"> 859</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, <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="l00863"></a><span class="lineno"> 863</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</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="l00864"></a><span class="lineno"> 864</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>, <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="l00865"></a><span class="lineno"> 865</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, <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="l00866"></a><span class="lineno"> 866</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, <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="l00867"></a><span class="lineno"> 867</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;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>);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;background&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;cursor&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;cursor_foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;highlight&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;highlight_foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;colorBD&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color0&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color1&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color2&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color3&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color4&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color5&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color6&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color7&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color8&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color9&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color10&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color11&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color12&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color13&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color14&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color15&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> : <span class="stringliteral">&quot;&quot;</span>);</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; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_news_permitted&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a>);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; g_debug(<span class="stringliteral">&quot;(%s) - Setting periodic_rmnews_last_get to %ld&quot;</span>, __func__, <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>);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; g_key_file_set_int64(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_last_get&quot;</span>, <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>);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_get_count&quot;</span>, <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>);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_news&quot;</span>, <span class="stringliteral">&quot;periodic_rmnews_uuid_prefix&quot;</span>,</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a> : <span class="stringliteral">&quot;&quot;</span>);</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">/* Default settings */</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;ignore-tls-errors&quot;</span>, 1);</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; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, &amp;error);</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="keywordflow">if</span> (error != NULL) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; g_warning(<span class="stringliteral">&quot;remmina_pref_save error: %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; g_clear_error(&amp;error);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">return</span> FALSE;</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; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">return</span> TRUE;</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;</div><div class="line"><a name="l00955"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60"> 955</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a>(<span class="keyword">const</span> gchar *protocol, <span class="keyword">const</span> gchar *server)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <a class="code" href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a> *array;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; gchar key[20];</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; g_autofree gchar *val = NULL;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; gsize length;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</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#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> &lt;= 0 || server == NULL || server[0] == 0)</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">/* Load original value into memory */</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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; g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">&quot;recent_%s&quot;</span>, protocol);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; array = <a class="code" href="remmina__string__array_8c.html#a462a635b3a55cc0e3af087ff996fba9a">remmina_string_array_new_from_allocated_string</a>(g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL));</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; <span class="comment">/* Add the new value */</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array_remove</a>(array, server);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">while</span> (array-&gt;len &gt;= <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>)</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array_remove_index</a>(array, 0);</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(array, server);</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; <span class="comment">/* Save */</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; val = <a class="code" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a>(array);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, val);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, 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; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;}</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;gchar *</div><div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05"> 993</a></span>&#160;<a class="code" href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a>(<span class="keyword">const</span> gchar *protocol)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; gchar key[20];</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; gchar *val = NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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; g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">&quot;recent_%s&quot;</span>, protocol);</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; val = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</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; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14"> 1012</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;{</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; gchar **keys;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; gint i;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; gsize length;</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; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; keys = g_key_file_get_keys(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, NULL, NULL);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">if</span> (keys) {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">for</span> (i = 0; keys[i]; i++)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">if</span> (strncmp(keys[i], <span class="stringliteral">&quot;recent_&quot;</span>, 7) == 0)</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, keys[i], <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; g_strfreev(keys);</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; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, NULL);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9"> 1038</a></span>&#160;guint *<a class="code" href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>(<span class="keyword">const</span> gchar *keymap)</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;{</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">return</span> 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; <span class="keywordflow">return</span> (guint *)g_hash_table_lookup(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, keymap);</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;</div><div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8"> 1048</a></span>&#160;guint <a class="code" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>(<span class="keyword">const</span> gchar *keymap, guint keyval)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; guint *table;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; gint i;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">return</span> keyval;</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; table = (guint *)g_hash_table_lookup(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, keymap);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">if</span> (!table)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">for</span> (i = 0; table[i] &gt; 0; i += 2)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">if</span> (table[i] == keyval)</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">return</span> table[i + 1];</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> keyval;</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;gchar **</div><div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395"> 1067</a></span>&#160;<a class="code" href="remmina__pref_8c.html#a745bbef1d48a7462f8db997821742395">remmina_pref_keymap_groups</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; GList *list;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; guint len;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; gchar **keys;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; guint i;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; list = g_hash_table_get_keys(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; len = g_list_length(list);</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; keys = g_new0(gchar *, (len + 1) * 2 + 1);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; keys[0] = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; keys[1] = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; len; i++) {</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; keys[(i + 1) * 2] = g_strdup((gchar *)g_list_nth_data(list, i));</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; keys[(i + 1) * 2 + 1] = g_strdup((gchar *)g_list_nth_data(list, i));</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; g_list_free(list);</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; <span class="keywordflow">return</span> keys;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b"> 1090</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="comment">/* Paranoid programming */</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</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#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> &lt; 0)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = 0;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267"> 1099</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;{</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23"> 1105</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>;</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;</div><div class="line"><a name="l01111"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99"> 1111</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;{</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>;</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;</div><div class="line"><a name="l01117"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be"> 1117</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;{</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;}</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div><div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414"> 1123</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;}</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b"> 1129</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a>(<span class="keywordtype">void</span>)</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"> 1131</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;}</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714"> 1135</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;{</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</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;</div><div class="line"><a name="l01141"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02"> 1141</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value)</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"> 1143</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; gsize length;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">if</span> (g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL))</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, value);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; gchar *content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, NULL)) {</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; g_free(content);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Cannot save Remmina preferences&quot;</span>);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Key was \&quot;%s\&quot;, and value \&quot;%s\&quot;&quot;</span>, key, value);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Cannot load Remmina preferences file&quot;</span>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6"> 1165</a></span>&#160;gchar *<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="keyword">const</span> gchar *key)</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;{</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; gchar *value = NULL;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; value = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;}</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f"> 1179</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="keyword">const</span> gchar *key)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; gboolean value;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; value = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; g_key_file_free(gkeyfile);</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"> 1190</span>&#160; <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;}</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
+<a href="remmina__pref_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;<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;string.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 &lt;sys/time.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;sys/utsname.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 &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkkeysyms.h&gt;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</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">#include &quot;<a class="code" href="remmina__sodium_8h.html">remmina_sodium.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"> 51</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="l00052"></a><span class="lineno"> 52</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="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__log_8h.html">remmina_log.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__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;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290"> 57</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a> = <span class="stringliteral">&quot;640x480,800x600,1024x768,1152x864,1280x960,1400x1050&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd"> 58</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a> = <span class="stringliteral">&quot;Send hello world§hello world\\n&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743"> 60</a></span>&#160;gchar *<a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46"> 61</a></span>&#160;<span class="keyword">static</span> GHashTable *<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a> = NULL;</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;<span class="comment">/* We could customize this further if there are more requirements */</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44"> 64</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a> = <span class="stringliteral">&quot;# Please check gdk/gdkkeysyms.h for a full list of all key names or hex key values\n&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="stringliteral">&quot;\n&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&quot;[Map Meta Keys]\n&quot;</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="stringliteral">&quot;Super_L = Meta_L\n&quot;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="stringliteral">&quot;Super_R = Meta_R\n&quot;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="stringliteral">&quot;Meta_L = Super_L\n&quot;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="stringliteral">&quot;Meta_R = Super_R\n&quot;</span>;</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"><a class="line" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c"> 72</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c">remmina_pref_gen_secret</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; guchar s[32];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; gint i;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; gsize length;</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="keywordflow">for</span> (i = 0; i &lt; 32; i++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; s[i] = (guchar)(randombytes_uniform(257));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = g_base64_encode(s, 32);</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"> 85</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, 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; g_key_file_free(gkeyfile);</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"><a class="line" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3"> 94</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(<span class="keyword">const</span> gchar *str)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; guint k;</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> (!str)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> 0;</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"> 102</span>&#160; k = gdk_keyval_from_name(str);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (!k)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">if</span> (sscanf(str, <span class="stringliteral">&quot;%x&quot;</span>, &amp;k) &lt; 1)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; k = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> k;</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__pref_8c.html#aed7f3859d4306419932df15131987355"> 109</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355">remmina_pref_init_keymap</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; gchar **groups;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; gchar **gptr;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; gchar **keys;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; gchar **kptr;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; gsize nkeys;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; g_autofree gchar *value = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; guint *table;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; guint *tableptr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; guint k1, k2;</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"> 123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; g_hash_table_destroy(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a> = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);</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; gkeyfile = g_key_file_new();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_file(gkeyfile, <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a>, G_KEY_FILE_NONE, NULL)) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (!g_key_file_load_from_data(gkeyfile, <a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a>, strlen(<a class="code" href="remmina__pref_8c.html#a23aaa111a41eb1c80df5e85af25e7e44">default_keymap_data</a>), G_KEY_FILE_NONE,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; NULL)) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_print(<span class="stringliteral">&quot;Failed to initialize keymap table\n&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</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;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; groups = g_key_file_get_groups(gkeyfile, NULL);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; gptr = groups;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">while</span> (*gptr) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; keys = g_key_file_get_keys(gkeyfile, *gptr, &amp;nkeys, NULL);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; table = g_new0(guint, nkeys * 2 + 1);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; g_hash_table_insert(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, g_strdup(*gptr), table);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; kptr = keys;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; tableptr = table;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span> (*kptr) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; k1 = <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(*kptr);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">if</span> (k1) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; value = g_key_file_get_string(gkeyfile, *gptr, *kptr, NULL);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; k2 = <a class="code" href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a>(value);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; *tableptr++ = k1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; *tableptr++ = k2;</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; kptr++;</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; g_strfreev(keys);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gptr++;</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; g_strfreev(groups);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; g_key_file_free(gkeyfile);</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="l00164"></a><span class="lineno"><a class="line" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81"> 164</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_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="l00165"></a><span class="lineno"> 165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</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="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">/* We don’t overwrite the target if it exists, because overwrite is not set */</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</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="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; g_object_unref(dst);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; g_object_unref(src);</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"> 173</span>&#160; <span class="keywordflow">return</span> ok;</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;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218"> 176</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(GKeyFile *gkeyfile, <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> *color_pref)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> * name;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">char</span> ** setting;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">char</span> * fallback;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; } colors[] = {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; { <span class="stringliteral">&quot;background&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; { <span class="stringliteral">&quot;cursor&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; { <span class="stringliteral">&quot;cursor_foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; { <span class="stringliteral">&quot;highlight&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; { <span class="stringliteral">&quot;highlight_foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; { <span class="stringliteral">&quot;colorBD&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; { <span class="stringliteral">&quot;foreground&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>, <span class="stringliteral">&quot;#45373c&quot;</span> },</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; { <span class="stringliteral">&quot;color0&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>, <span class="stringliteral">&quot;#20111b&quot;</span> },</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; { <span class="stringliteral">&quot;color1&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>, <span class="stringliteral">&quot;#be100e&quot;</span> },</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; { <span class="stringliteral">&quot;color2&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>, <span class="stringliteral">&quot;#858162&quot;</span> },</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; { <span class="stringliteral">&quot;color3&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>, <span class="stringliteral">&quot;#eaa549&quot;</span> },</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; { <span class="stringliteral">&quot;color4&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>, <span class="stringliteral">&quot;#426a79&quot;</span> },</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; { <span class="stringliteral">&quot;color5&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>, <span class="stringliteral">&quot;#97522c&quot;</span> },</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; { <span class="stringliteral">&quot;color6&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>, <span class="stringliteral">&quot;#989a9c&quot;</span> },</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; { <span class="stringliteral">&quot;color7&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>, <span class="stringliteral">&quot;#968c83&quot;</span> },</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; { <span class="stringliteral">&quot;color8&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>, <span class="stringliteral">&quot;#5e5252&quot;</span> },</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; { <span class="stringliteral">&quot;color9&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>, <span class="stringliteral">&quot;#be100e&quot;</span> },</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; { <span class="stringliteral">&quot;color10&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>, <span class="stringliteral">&quot;#858162&quot;</span> },</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; { <span class="stringliteral">&quot;color11&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>, <span class="stringliteral">&quot;#eaa549&quot;</span> },</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; { <span class="stringliteral">&quot;color12&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>, <span class="stringliteral">&quot;#426a79&quot;</span> },</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; { <span class="stringliteral">&quot;color13&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>, <span class="stringliteral">&quot;#97522c&quot;</span> },</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; { <span class="stringliteral">&quot;color14&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>, <span class="stringliteral">&quot;#989a9c&quot;</span> },</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; { <span class="stringliteral">&quot;color15&quot;</span>, &amp;color_pref-&gt;<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>, <span class="stringliteral">&quot;#d5ccba&quot;</span> },</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; };</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; <span class="keywordtype">int</span> i;</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">for</span> (i = 0; i &lt; (<span class="keyword">sizeof</span>(colors) / <span class="keyword">sizeof</span>(colors[0])); i++) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, colors[i].name, NULL))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; *colors[i].setting = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, colors[i].name,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; NULL);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *colors[i].setting = colors[i].fallback;</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;}</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"><a class="line" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd"> 219</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; gchar *remmina_dir;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> gchar *filename = <span class="stringliteral">&quot;remmina.pref&quot;</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">const</span> gchar *colors_filename = <span class="stringliteral">&quot;remmina.colors&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; g_autofree gchar *<a class="code" href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a> = NULL;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; GDir *dir;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">const</span> gchar *legacy = <span class="stringliteral">&quot;.remmina&quot;</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">int</span> i;</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; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">/* Create the XDG_CONFIG_HOME directory */</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; g_mkdir_with_parents(remmina_dir, 0750);</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"> 235</span>&#160; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">/* Legacy ~/.remmina we copy the existing remmina.pref file inside</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * XDG_CONFIG_HOME */</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_home_dir(), legacy, NULL);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_do_copy</a>(</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</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; <span class="comment">/* /usr/local/etc/remmina */</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> gchar *<span class="keyword">const</span> *dirs = g_get_system_config_dirs();</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; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span> (i = 0; dirs[i] != NULL; ++i) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; remmina_dir = 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="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_dir, G_FILE_TEST_IS_DIR)) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; dir = g_dir_open(remmina_dir, 0, NULL);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">while</span> ((filename = g_dir_read_name(dir)) != NULL) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="remmina__pref_8c.html#a7829d615a6c5b8a6f6c759043fb2ac81">remmina_pref_file_do_copy</a>(</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, remmina_dir, filename, NULL),</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, filename, NULL));</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; g_free(remmina_dir), remmina_dir = 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"> 265</span>&#160; <span class="comment">/* The last case we use the home ~/.config/remmina */</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (remmina_dir != NULL)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; g_free(remmina_dir), remmina_dir = NULL;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</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; <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a> = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.pref&quot;</span>, remmina_dir);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">/* remmina.colors */</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; remmina_colors_file = g_strdup_printf(<span class="stringliteral">&quot;%s/%s&quot;</span>, remmina_dir, colors_filename);</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; <a class="code" href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a> = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.keymap&quot;</span>, remmina_dir);</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; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, NULL))</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, NULL);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, NULL))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, NULL);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = TRUE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, NULL))</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, NULL);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, NULL))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, NULL);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = 300;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, NULL))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, NULL);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_strdup(<span class="stringliteral">&quot;&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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, NULL))</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, NULL);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, NULL))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, NULL);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</span>, NULL))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</span>, NULL);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = 1;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, NULL))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, NULL);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, NULL))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, NULL);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, NULL))</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, NULL);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = TRUE;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, NULL))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, NULL);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a> = <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a>;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, NULL))</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, NULL);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</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> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</span>, NULL))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</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_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</span>, NULL);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</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(<span class="stringliteral">&quot;&quot;</span>);</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"> 356</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, NULL))</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, NULL);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a> = <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, NULL))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, NULL);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = TRUE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = FALSE;</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">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, NULL))</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, NULL);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, NULL);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = FALSE;</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">if</span> (<a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_searchbar&quot;</span>, NULL))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="stringliteral">&quot;hide_searchbar&quot;</span>, NULL);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = FALSE;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</span>, NULL))</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</span>, NULL);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, NULL))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, NULL);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = GDK_INTERP_HYPER;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, NULL);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, NULL))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, NULL);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</span>, NULL))</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</span>, NULL);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</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="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, NULL))</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, NULL);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = g_strdup(<a class="code" href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, NULL))</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, NULL);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = g_strdup(<a class="code" href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, NULL))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a> = MAX(600, g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, NULL));</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a> = 600;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, NULL))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a> = MAX(400, g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, NULL));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a> = 400;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</span>, NULL))</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</span>, NULL);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</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="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>, NULL))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>,</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; NULL);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</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> = 1;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, NULL))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</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> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, NULL);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</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> = 0;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, NULL))</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, NULL);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</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> = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, NULL))</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, NULL);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a> = FALSE;</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"> 463</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, NULL))</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, NULL);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = DEFAULT_SSH_LOGLEVEL;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, NULL))</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, NULL);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = TRUE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, NULL))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, NULL);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_strdup(<span class="stringliteral">&quot;&quot;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, NULL))</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</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> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, NULL);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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> = g_strdup(<span class="stringliteral">&quot;%G_%P_%N_%h&quot;</span>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, NULL)) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_get_user_special_dir(G_USER_DIRECTORY_PICTURES);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</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#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> == NULL)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = g_get_home_dir();</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;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, NULL))</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, NULL);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = g_strdup(<span class="stringliteral">&quot;remmina_%p_%h_%Y%m%d-%H%M%S&quot;</span>);</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, NULL))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, NULL);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = DEFAULT_SSH_PARSECONFIG;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, NULL))</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, NULL);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = DEFAULT_SSHTUNNEL_PORT;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, NULL))</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, NULL);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = SSH_SOCKET_TCP_KEEPIDLE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, NULL))</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, NULL);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, NULL))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, NULL);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">else</span></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#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = SSH_SOCKET_TCP_KEEPCNT;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, NULL))</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, NULL);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = SSH_SOCKET_TCP_USER_TIMEOUT;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, NULL))</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, NULL);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, NULL))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, NULL);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = FALSE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>, NULL))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; NULL);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a> = FALSE;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, NULL))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, NULL);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = FALSE;</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> (<a class="code" href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;dark_theme&quot;</span>, NULL))</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</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> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;dark_theme&quot;</span>, NULL);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</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> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;list_refresh_workaround&quot;</span>, NULL))</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;list_refresh_workaround&quot;</span>, NULL);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a> = FALSE;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, NULL))</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, NULL);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = FALSE;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, NULL))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, NULL);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = <span class="stringliteral">&quot;#00ff00&quot;</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, NULL))</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, NULL);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = 10;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, NULL))</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, NULL);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = 0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, NULL))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, NULL);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = 0;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, NULL))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, NULL);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a>;</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; <span class="keywordflow">if</span> (<a class="code" href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a>;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, NULL))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, NULL);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 10;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, NULL))</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, NULL);</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="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = GDK_KEY_Control_R;</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"> 606</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>, NULL))</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>,</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; NULL);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = GDK_KEY_f;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>, NULL))</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>,</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; NULL);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = GDK_KEY_1;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>, NULL))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; NULL);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = GDK_KEY_Right;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>, NULL))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>,</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; NULL);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = GDK_KEY_Left;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, NULL))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, NULL);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = GDK_KEY_s;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, NULL))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, NULL);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = GDK_KEY_m;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, NULL))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, NULL);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = GDK_KEY_Page_Up;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, NULL))</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, NULL);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = GDK_KEY_Control_R;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, NULL))</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, NULL);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = GDK_KEY_F9;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, NULL))</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, NULL);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = GDK_KEY_F12;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>, NULL))</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>,</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; NULL);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = GDK_KEY_F4;</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="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>, NULL))</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>,</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; NULL);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = GDK_KEY_t;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, NULL))</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;secret&quot;</span>, NULL);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> = NULL;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;uid&quot;</span>, NULL))</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;uid&quot;</span>, NULL);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a> = NULL;</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">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, NULL))</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = 0;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>, NULL))</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; NULL);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = TRUE;</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; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, NULL))</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, NULL);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = 512;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>, NULL))</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>,</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; NULL);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = GDK_KEY_c;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>, NULL))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>,</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; NULL);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = GDK_KEY_v;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>, NULL))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>,</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; NULL);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">else</span></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#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = GDK_KEY_a;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>, NULL))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; NULL);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = GDK_KEY_Page_Up;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>, NULL))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; NULL);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = GDK_KEY_Page_Down;</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> (g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>, NULL))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = g_key_file_get_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>,</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; NULL);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = GDK_KEY_g;</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;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(gkeyfile, &amp;<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>);</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="comment">/* If we have a color scheme file, we switch to it, GIO will merge it in the</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment"> * remmina.pref file */</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">if</span> (g_file_test(remmina_colors_file, G_FILE_TEST_IS_REGULAR)) {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; g_key_file_load_from_file(gkeyfile, remmina_colors_file, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; g_remove(remmina_colors_file);</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;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (!g_key_file_has_key(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, NULL)) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;ignore-tls-errors&quot;</span>, 1);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;enable-plugins&quot;</span>, 1);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; }</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_key_file_free(gkeyfile);</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; <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a> == NULL)</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <a class="code" href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c">remmina_pref_gen_secret</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; <a class="code" href="remmina__pref_8c.html#aed7f3859d4306419932df15131987355">remmina_pref_init_keymap</a>();</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"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c"> 760</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">if</span> (access(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, W_OK) == 0)</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f"> 770</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</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; <span class="keywordflow">if</span> (<a class="code" href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>() == FALSE) {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; g_debug(<span class="stringliteral">&quot;remmina.pref is not writable, returning&quot;</span>);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; GError *error = NULL;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; gsize length;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;datadir_path&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;remmina_file_name&quot;</span>, <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="l00789"></a><span class="lineno"> 789</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_path&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;screenshot_name&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;deny_screenshot_clipboard&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;save_view_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;confirm_close&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (g_key_file_remove_key (gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_master_password&quot;</span>, NULL))</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;use_master_password removed…&quot;</span>);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; REMMINA_INFO(<span class="stringliteral">&quot;use_master_password already migrated&quot;</span>);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a>);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;use_primary_password&quot;</span>, FALSE);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_timeout&quot;</span>, 0);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;unlock_password&quot;</span>, g_strdup(<span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_connect&quot;</span>, FALSE);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;lock_edit&quot;</span>, FALSE);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;enc_mode&quot;</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="l00812"></a><span class="lineno"> 812</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;audit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;trust_all&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;floating_toolbar_placement&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a>);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_placement&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;prevent_snap_welcome_message&quot;</span>, <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="l00817"></a><span class="lineno"> 817</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;last_quickconnect_protocol&quot;</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>);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_on_auto&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_tab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;always_show_notes&quot;</span>, <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="l00821"></a><span class="lineno"> 821</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_connection_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_searchbar&quot;</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="l00823"></a><span class="lineno"> 823</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_action&quot;</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="l00824"></a><span class="lineno"> 824</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;scale_quality&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_loglevel&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_parseconfig&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hide_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;small_toolbutton&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;view_file_mode&quot;</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="l00830"></a><span class="lineno"> 830</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;resolutions&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;keystrokes&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_width&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_height&quot;</span>, <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="l00834"></a><span class="lineno"> 834</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_maximize&quot;</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="l00835"></a><span class="lineno"> 835</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_column_id&quot;</span>, <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="l00836"></a><span class="lineno"> 836</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;main_sort_order&quot;</span>, <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="l00837"></a><span class="lineno"> 837</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;expanded_group&quot;</span>, <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="l00838"></a><span class="lineno"> 838</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;toolbar_pin_down&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;sshtunnel_port&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepidle&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepintvl&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_keepcnt&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;ssh_tcp_usrtimeout&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_new_ontop&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_hide_count&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;applet_enable_avahi&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;disable_tray_icon&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;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>);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;recent_maximum&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;default_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;tab_mode&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;fullscreen_toolbar_visibility&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;auto_scroll_step&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;hostkey&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_fullscreen&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_autofit&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_nexttab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_prevtab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_scale&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_grab&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_multimon&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_viewonly&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_screenshot&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_minimize&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_disconnect&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;shortcutkey_toolbar&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_copy&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_paste&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_select_all&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_increase_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_decrease_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_shortcutkey_search_text&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_font&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;grab_color_switch&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; g_key_file_set_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_allow_bold_text&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, <span class="stringliteral">&quot;vte_lines&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;background&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;cursor&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;cursor_foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;highlight&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;highlight_foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;colorBD&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;foreground&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color0&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color1&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color2&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color3&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color4&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color5&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color6&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color7&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color8&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color9&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color10&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color11&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color12&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color13&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color14&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> : <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;ssh_colors&quot;</span>, <span class="stringliteral">&quot;color15&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> ? <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> : <span class="stringliteral">&quot;&quot;</span>);</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; <span class="comment">/* Default settings */</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; g_key_file_set_integer(gkeyfile, <span class="stringliteral">&quot;remmina&quot;</span>, <span class="stringliteral">&quot;ignore-tls-errors&quot;</span>, 1);</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; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, &amp;error);</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; <span class="keywordflow">if</span> (error != NULL) {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; g_warning(<span class="stringliteral">&quot;remmina_pref_save error: %s&quot;</span>, error-&gt;message);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; g_clear_error(&amp;error);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60"> 919</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a>(<span class="keyword">const</span> gchar *protocol, <span class="keyword">const</span> gchar *server)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <a class="code" href="remmina__string__array_8h.html#a62228cb0bc959307e3268cff98e1f7bb">RemminaStringArray</a> *array;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; gchar key[20];</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; g_autofree gchar *val = NULL;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; gsize length;</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> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> &lt;= 0 || server == NULL || server[0] == 0)</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">return</span>;</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; <span class="comment">/* Load original value into memory */</span></div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; gkeyfile = g_key_file_new();</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_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</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; g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">&quot;recent_%s&quot;</span>, protocol);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; array = <a class="code" href="remmina__string__array_8c.html#a462a635b3a55cc0e3af087ff996fba9a">remmina_string_array_new_from_allocated_string</a>(g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL));</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="comment">/* Add the new value */</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array_remove</a>(array, server);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">while</span> (array-&gt;len &gt;= <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>)</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <a class="code" href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array_remove_index</a>(array, 0);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a>(array, server);</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"> 946</span>&#160; <span class="comment">/* Save */</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; val = <a class="code" href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a>(array);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, val);</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; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, NULL);</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_free(gkeyfile);</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;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;gchar *</div><div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05"> 957</a></span>&#160;<a class="code" href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a>(<span class="keyword">const</span> gchar *protocol)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; gchar key[20];</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; gchar *val = NULL;</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; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; g_snprintf(key, <span class="keyword">sizeof</span>(key), <span class="stringliteral">&quot;recent_%s&quot;</span>, protocol);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; val = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</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; g_key_file_free(gkeyfile);</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; <span class="keywordflow">return</span> val;</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__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14"> 976</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; gchar **keys;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; gint i;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; g_autofree gchar *content = NULL;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; gsize length;</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; gkeyfile = g_key_file_new();</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; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; keys = g_key_file_get_keys(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, NULL, NULL);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">if</span> (keys) {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">for</span> (i = 0; keys[i]; i++)</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span> (strncmp(keys[i], <span class="stringliteral">&quot;recent_&quot;</span>, 7) == 0)</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, keys[i], <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; g_strfreev(keys);</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; content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, NULL);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9"> 1002</a></span>&#160;guint *<a class="code" href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>(<span class="keyword">const</span> gchar *keymap)</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; TRACE_CALL(__func__);</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; <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">return</span> (guint *)g_hash_table_lookup(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, keymap);</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8"> 1012</a></span>&#160;guint <a class="code" href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>(<span class="keyword">const</span> gchar *keymap, guint keyval)</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;{</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; guint *table;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; gint i;</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; <span class="keywordflow">if</span> (!keymap || keymap[0] == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">return</span> keyval;</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; table = (guint *)g_hash_table_lookup(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>, keymap);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">if</span> (!table)</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <span class="keywordflow">for</span> (i = 0; table[i] &gt; 0; i += 2)</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">if</span> (table[i] == keyval)</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">return</span> table[i + 1];</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">return</span> keyval;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;}</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;gchar **</div><div class="line"><a name="l01031"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395"> 1031</a></span>&#160;<a class="code" href="remmina__pref_8c.html#a745bbef1d48a7462f8db997821742395">remmina_pref_keymap_groups</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; GList *list;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; guint len;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; gchar **keys;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; guint i;</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; list = g_hash_table_get_keys(<a class="code" href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; len = g_list_length(list);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; keys = g_new0(gchar *, (len + 1) * 2 + 1);</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; keys[0] = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; keys[1] = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; len; i++) {</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; keys[(i + 1) * 2] = g_strdup((gchar *)g_list_nth_data(list, i));</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; keys[(i + 1) * 2 + 1] = g_strdup((gchar *)g_list_nth_data(list, i));</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; g_list_free(list);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">return</span> keys;</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;</div><div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b"> 1054</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;{</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="comment">/* Paranoid programming */</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</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#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> &lt; 0)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = 0;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01063"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267"> 1063</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</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"><a class="line" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23"> 1069</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;}</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99"> 1075</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</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;</div><div class="line"><a name="l01081"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be"> 1081</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;{</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</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"><a class="line" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414"> 1087</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;{</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</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;</div><div class="line"><a name="l01093"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b"> 1093</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;{</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714"> 1099</a></span>&#160;gint <a class="code" href="remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;{</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;}</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"><a class="line" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02"> 1105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; gsize length;</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; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">if</span> (g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL))</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; g_key_file_set_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, value);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; gchar *content = g_key_file_to_data(gkeyfile, &amp;length, NULL);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">if</span> (g_file_set_contents(<a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, content, length, NULL)) {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; g_free(content);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Cannot save Remmina preferences&quot;</span>);</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Key was \&quot;%s\&quot;, and value \&quot;%s\&quot;&quot;</span>, key, value);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; }</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; g_key_file_free(gkeyfile);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Cannot load Remmina preferences file&quot;</span>);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;}</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6"> 1129</a></span>&#160;gchar *<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="keyword">const</span> gchar *key)</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"> 1131</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; GKeyFile *gkeyfile;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; gchar *value = NULL;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; value = g_key_file_get_string(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; g_key_file_free(gkeyfile);</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; <span class="keywordflow">return</span> value;</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__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f"> 1143</a></span>&#160;gboolean <a class="code" href="remmina__pref_8c.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="keyword">const</span> gchar *key)</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; GKeyFile *gkeyfile;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; gboolean value;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; gkeyfile = g_key_file_new();</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; g_key_file_load_from_file(gkeyfile, <a class="code" href="rcw_8c.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>, G_KEY_FILE_NONE, NULL);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; value = g_key_file_get_boolean(gkeyfile, <span class="stringliteral">&quot;remmina_pref&quot;</span>, key, NULL);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; g_key_file_free(gkeyfile);</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; <span class="keywordflow">return</span> value;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac95fed56e8995e3361928ebf87505f21"><div class="ttname"><a href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">_RemminaPref::floating_toolbar_placement</a></div><div class="ttdeci">gint floating_toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00222">remmina_pref.h:222</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="struct___remmina_pref_html_a3e3d20bf883608e3ff133901d2f4e8d5"><div class="ttname"><a href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">_RemminaPref::vte_shortcutkey_search_text</a></div><div class="ttdeci">guint vte_shortcutkey_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00207">remmina_pref.h:207</a></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="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__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#l01054">remmina_pref.c:1054</a></div></div>
<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__sodium_8h_html"><div class="ttname"><a href="remmina__sodium_8h.html">remmina_sodium.h</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_afc609e167e078f1991320f79e9f9157c"><div class="ttname"><a href="remmina__pref_8c.html#afc609e167e078f1991320f79e9f9157c">remmina_pref_gen_secret</a></div><div class="ttdeci">static void remmina_pref_gen_secret(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00072">remmina_pref.c:72</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a766ea73df1b7d25866582ec209941de8"><div class="ttname"><a href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">_RemminaPref::lock_connect</a></div><div class="ttdeci">gboolean lock_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00192">remmina_pref.h:192</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__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#l01031">remmina_pref.c:1031</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a858117f890841ad21d3a153f5b81dbdd"><div class="ttname"><a href="remmina__pref_8c.html#a858117f890841ad21d3a153f5b81dbdd">default_keystrokes</a></div><div class="ttdeci">const gchar * default_keystrokes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00058">remmina_pref.c:58</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a5f5bc6d5bc53adaf815444145242a7df"><div class="ttname"><a href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">_RemminaPref::grab_color</a></div><div class="ttdeci">const gchar * grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00158">remmina_pref.h:158</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a90e0cfac442b9e50e0f4857b3ff74255"><div class="ttname"><a href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">_RemminaPref::vte_shortcutkey_increase_font</a></div><div class="ttdeci">guint vte_shortcutkey_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00205">remmina_pref.h:205</a></div></div>
@@ -104,7 +104,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a054a55a2c39181609150cbb4d22413ef"><div class="ttname"><a href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">_RemminaPref::default_action</a></div><div class="ttdeci">gint default_action</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00140">remmina_pref.h:140</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#l00078">rcw.c:78</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__pref_8c_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01111">remmina_pref.c:1111</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8c.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01075">remmina_pref.c:1075</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6ae707cecd1f6660d8e2168d7422b797"><div class="ttname"><a href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">_RemminaPref::hostkey</a></div><div class="ttdeci">guint hostkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00173">remmina_pref.h:173</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a49c21f0374af5abd5c3034cbc665a17f"><div class="ttname"><a href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">_RemminaPref::uid</a></div><div class="ttdeci">gchar * uid</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00231">remmina_pref.h:231</a></div></div>
<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>
@@ -120,13 +120,13 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<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>
<div class="ttc" id="struct___remmina_color_pref_html_ae26f55ce50c1485cda60106c5f24256c"><div class="ttname"><a href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">_RemminaColorPref::color10</a></div><div class="ttdeci">gchar * color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00124">remmina_pref.h:124</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a3f12bdb761d7c3ee02c0871aa423bcd1"><div class="ttname"><a href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">_RemminaColorPref::colorBD</a></div><div class="ttdeci">gchar * colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00112">remmina_pref.h:112</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="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#l01063">remmina_pref.c:1063</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a65a1f2b90d033425fd0c041fccae320c"><div class="ttname"><a href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">_RemminaPref::auto_scroll_step</a></div><div class="ttdeci">gint auto_scroll_step</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00142">remmina_pref.h:142</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a579fae9094500d743c26d03f4c34d457"><div class="ttname"><a href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">_RemminaPref::vte_shortcutkey_copy</a></div><div class="ttdeci">guint vte_shortcutkey_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00202">remmina_pref.h:202</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ab0928bd64388cb1ced2f542d3b35019d"><div class="ttname"><a href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">_RemminaPref::default_mode</a></div><div class="ttdeci">gint default_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00155">remmina_pref.h:155</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__pref_8c_html_a0296a8f5b359547a0aa4cbffb914edd3"><div class="ttname"><a href="remmina__pref_8c.html#a0296a8f5b359547a0aa4cbffb914edd3">remmina_pref_get_keyval_from_str</a></div><div class="ttdeci">static guint remmina_pref_get_keyval_from_str(const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00094">remmina_pref.c:94</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00993">remmina_pref.c:993</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8c.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00957">remmina_pref.c:957</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a3a897d3fdc112fd9f96d2363f4094fc4"><div class="ttname"><a href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">_RemminaColorPref::color2</a></div><div class="ttdeci">gchar * color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00116">remmina_pref.h:116</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a"><div class="ttname"><a href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00058">remmina_pref.h:58</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7"><div class="ttname"><a href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00053">remmina_pref.h:53</a></div></div>
@@ -137,39 +137,37 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_color_pref_html_ae560922bd1e57c944f87e444e1159ccf"><div class="ttname"><a href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">_RemminaColorPref::highlight_foreground</a></div><div class="ttdeci">gchar * highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00111">remmina_pref.h:111</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a96f7bec7ce32de6cf5deadcd5aec51ec"><div class="ttname"><a href="remmina__string__array_8c.html#a96f7bec7ce32de6cf5deadcd5aec51ec">remmina_string_array_to_string</a></div><div class="ttdeci">gchar * remmina_string_array_to_string(RemminaStringArray *array)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00155">remmina_string_array.c:155</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a095f19f07c5ebeb47a89b1bfe23cc21e"><div class="ttname"><a href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">_RemminaPref::scale_quality</a></div><div class="ttdeci">gint scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00141">remmina_pref.h:141</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00955">remmina_pref.c:955</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01141">remmina_pref.c:1141</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8c.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00919">remmina_pref.c:919</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae63c0c0ec8dbfe8bf665221868661b35"><div class="ttname"><a href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">_RemminaPref::deny_screenshot_clipboard</a></div><div class="ttdeci">gboolean deny_screenshot_clipboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00137">remmina_pref.h:137</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a59eebf1d365ef192de8e14da2c381f37"><div class="ttname"><a href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">_RemminaPref::resolutions</a></div><div class="ttdeci">gchar * resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00144">remmina_pref.h:144</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_ad11e485a8fdb8af1fded85f68f4ba7c4"><div class="ttname"><a href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">_RemminaPref::periodic_news_permitted</a></div><div class="ttdeci">gboolean periodic_news_permitted</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00239">remmina_pref.h:239</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a9c5171c5d8a61cc48171065644613cad"><div class="ttname"><a href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">_RemminaPref::vte_shortcutkey_select_all</a></div><div class="ttdeci">guint vte_shortcutkey_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00204">remmina_pref.h:204</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aa495bd5170c952a7dccff4e2504f5867"><div class="ttname"><a href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">_RemminaColorPref::foreground</a></div><div class="ttdeci">gchar * foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00113">remmina_pref.h:113</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a675a8004488715429fa540dffb330d49"><div class="ttname"><a href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">_RemminaColorPref::background</a></div><div class="ttdeci">gchar * background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00107">remmina_pref.h:107</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4504684f0e67bb50157fd6862182e2c4"><div class="ttname"><a href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">_RemminaPref::main_sort_order</a></div><div class="ttdeci">gint main_sort_order</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00219">remmina_pref.h:219</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a52f5fa8b2b4500c3ab9ae35f0d410f17"><div class="ttname"><a href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">_RemminaPref::vte_allow_bold_text</a></div><div class="ttdeci">gboolean vte_allow_bold_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00199">remmina_pref.h:199</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_afcd157a6f3bddb4b23b4e328cd18358c"><div class="ttname"><a href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">_RemminaPref::disable_tray_icon</a></div><div class="ttdeci">gboolean disable_tray_icon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00163">remmina_pref.h:163</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796"><div class="ttname"><a href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00071">remmina_pref.h:71</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="struct___remmina_pref_html_ab78e34f426da9a37b467efbdf2183644"><div class="ttname"><a href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">_RemminaPref::recent_maximum</a></div><div class="ttdeci">gint recent_maximum</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00143">remmina_pref.h:143</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8c.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01069">remmina_pref.c:1069</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_ac194a2cb922d4a047b825dc69713cc46"><div class="ttname"><a href="remmina__pref_8c.html#ac194a2cb922d4a047b825dc69713cc46">remmina_keymap_table</a></div><div class="ttdeci">static GHashTable * remmina_keymap_table</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00061">remmina_pref.c:61</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac342b87e3992a20833d39e864e8ab85b"><div class="ttname"><a href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">_RemminaPref::vte_font</a></div><div class="ttdeci">gchar * vte_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00198">remmina_pref.h:198</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4f2cf3433d4f689fbe8b250dcfb8148d"><div class="ttname"><a href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">_RemminaPref::shortcutkey_multimon</a></div><div class="ttdeci">guint shortcutkey_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00180">remmina_pref.h:180</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a3df98a686c4e2703455c1a786d3f1f5c"><div class="ttname"><a href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">_RemminaPref::screenshot_path</a></div><div class="ttdeci">const gchar * screenshot_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00136">remmina_pref.h:136</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a40811c036e46f6544ab6c4cff445454b"><div class="ttname"><a href="remmina__string__array_8c.html#a40811c036e46f6544ab6c4cff445454b">remmina_string_array_remove_index</a></div><div class="ttdeci">void remmina_string_array_remove_index(RemminaStringArray *array, gint i)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00104">remmina_string_array.c:104</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01038">remmina_pref.c:1038</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8c.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01002">remmina_pref.c:1002</a></div></div>
<div class="ttc" id="remmina__string__array_8h_html"><div class="ttname"><a href="remmina__string__array_8h.html">remmina_string_array.h</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aef2fe0f203dd68ed30d12e3b22a4f972"><div class="ttname"><a href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">_RemminaPref::unlock_timeout</a></div><div class="ttdeci">gint unlock_timeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00191">remmina_pref.h:191</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa9a057b8d4095678d3c0806ab37af365"><div class="ttname"><a href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">_RemminaPref::confirm_close</a></div><div class="ttdeci">gboolean confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00146">remmina_pref.h:146</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="struct___remmina_pref_html_a0242e9fcc63d6d24257f63fc23077133"><div class="ttname"><a href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">_RemminaPref::toolbar_placement</a></div><div class="ttdeci">gint toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00223">remmina_pref.h:223</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a18872e092d22f5d3accb66d6a22845d7"><div class="ttname"><a href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">_RemminaPref::prevent_snap_welcome_message</a></div><div class="ttdeci">gboolean prevent_snap_welcome_message</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00224">remmina_pref.h:224</a></div></div>
-<div class="ttc" id="remmina_8c_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00088">remmina.c:88</a></div></div>
+<div class="ttc" id="remmina_8c_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00086">remmina.c:86</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa8d4c923cb9ca1be451436d1790e8ee5"><div class="ttname"><a href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">_RemminaPref::expanded_group</a></div><div class="ttdeci">gchar * expanded_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00220">remmina_pref.h:220</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2ae608a877b349b1af50c2456afda972"><div class="ttname"><a href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">_RemminaPref::vte_shortcutkey_decrease_font</a></div><div class="ttdeci">guint vte_shortcutkey_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00206">remmina_pref.h:206</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_a87044f758cc0e9c975b02c3f94147e06"><div class="ttname"><a href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">_RemminaPref::periodic_rmnews_uuid_prefix</a></div><div class="ttdeci">gchar * periodic_rmnews_uuid_prefix</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00242">remmina_pref.h:242</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a65b01db52636d3fb896cd8a5c68eb2fc"><div class="ttname"><a href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">_RemminaPref::unlock_password</a></div><div class="ttdeci">const gchar * unlock_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00189">remmina_pref.h:189</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a901034949132f369eb34c4f1ded3a0a6"><div class="ttname"><a href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">_RemminaPref::vte_shortcutkey_paste</a></div><div class="ttdeci">guint vte_shortcutkey_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00203">remmina_pref.h:203</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>
@@ -186,15 +184,14 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00100">remmina_pref.h:100</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955"><div class="ttname"><a href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00067">remmina_pref.h:67</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a462a635b3a55cc0e3af087ff996fba9a"><div class="ttname"><a href="remmina__string__array_8c.html#a462a635b3a55cc0e3af087ff996fba9a">remmina_string_array_new_from_allocated_string</a></div><div class="ttdeci">RemminaStringArray * remmina_string_array_new_from_allocated_string(gchar *strs)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00077">remmina_string_array.c:77</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_a1b13dc96ccf8ebad045f02c58eb1d005"><div class="ttname"><a href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">_RemminaPref::periodic_rmnews_get_count</a></div><div class="ttdeci">glong periodic_rmnews_get_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00241">remmina_pref.h:241</a></div></div>
-<div class="ttc" id="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
-<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="remmina_8c_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina_8c.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</a></div></div>
+<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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ac8ae5e31836066ac69f7c907f30d2ffc"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">_RemminaColorPref::color9</a></div><div class="ttdeci">gchar * color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00123">remmina_pref.h:123</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a2d0facd5a0480a450d525ce9ef4fed60"><div class="ttname"><a href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">_RemminaColorPref::color5</a></div><div class="ttdeci">gchar * color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00119">remmina_pref.h:119</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="struct___remmina_color_pref_html_a1d9bd13f411189c9d8d8a08ceb77e8d7"><div class="ttname"><a href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">_RemminaColorPref::color7</a></div><div class="ttdeci">gchar * color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00121">remmina_pref.h:121</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a781431450dfcf639c8dd96701be3795b"><div class="ttname"><a href="remmina__pref_8c.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepcnt(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a781431450dfcf639c8dd96701be3795b"><div class="ttname"><a href="remmina__pref_8c.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepcnt(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01093">remmina_pref.c:1093</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00976">remmina_pref.c:976</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a316f4290c083d28bd3492ee979278290"><div class="ttname"><a href="remmina__pref_8c.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a></div><div class="ttdeci">const gchar * default_resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00057">remmina_pref.c:57</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a712773f926eb2ec030d6af80cdc33095"><div class="ttname"><a href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">_RemminaPref::shortcutkey_nexttab</a></div><div class="ttdeci">guint shortcutkey_nexttab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00177">remmina_pref.h:177</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_acee9d7384a5e3949df53cdf54390bbcd"><div class="ttname"><a href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">_RemminaPref::applet_hide_count</a></div><div class="ttdeci">gboolean applet_hide_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00162">remmina_pref.h:162</a></div></div>
@@ -202,7 +199,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a2bf96a40b9f63300d02e158b26546203"><div class="ttname"><a href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">_RemminaPref::ssh_tcp_keepidle</a></div><div class="ttdeci">gint ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00168">remmina_pref.h:168</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a599f643c5a42ffd9c6a382199f147efd"><div class="ttname"><a href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">_RemminaPref::lock_edit</a></div><div class="ttdeci">gboolean lock_edit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00193">remmina_pref.h:193</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aecbe4c6a13ec6eda818c9f74c6f63468"><div class="ttname"><a href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">_RemminaPref::tab_mode</a></div><div class="ttdeci">gint tab_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00156">remmina_pref.h:156</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01048">remmina_pref.c:1048</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8c.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a8cbf300dc913d51365c93f928e0d02fd"><div class="ttname"><a href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">_RemminaPref::hide_toolbar</a></div><div class="ttdeci">gboolean hide_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00209">remmina_pref.h:209</a></div></div>
<div class="ttc" id="remmina__string__array_8c_html_a2a8a9753ebf61c9418a77ba3dd654ff3"><div class="ttname"><a href="remmina__string__array_8c.html#a2a8a9753ebf61c9418a77ba3dd654ff3">remmina_string_array_remove</a></div><div class="ttdeci">void remmina_string_array_remove(RemminaStringArray *array, const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00110">remmina_string_array.c:110</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#l00079">rcw.c:79</a></div></div>
@@ -212,14 +209,14 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_abbd08ed0c74b8f216e633aae6b141792"><div class="ttname"><a href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">_RemminaPref::applet_enable_avahi</a></div><div class="ttdeci">gboolean applet_enable_avahi</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00213">remmina_pref.h:213</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="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_8c_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00091">remmina.c:91</a></div></div>
+<div class="ttc" id="remmina_8c_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a400f7319fd3996a13399ef72bcf0a2fd"><div class="ttname"><a href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a></div><div class="ttdeci">void remmina_pref_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00219">remmina_pref.c:219</a></div></div>
<div class="ttc" id="remmina__pref_8c_html_a10b667eb7a100d6ac8d9544697f22743"><div class="ttname"><a href="remmina__pref_8c.html#a10b667eb7a100d6ac8d9544697f22743">remmina_keymap_file</a></div><div class="ttdeci">gchar * remmina_keymap_file</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00060">remmina_pref.c:60</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="struct___remmina_pref_html_aa3dc5f8676c4747f2fcaf9a68d16d11b"><div class="ttname"><a href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">_RemminaPref::shortcutkey_toolbar</a></div><div class="ttdeci">guint shortcutkey_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00186">remmina_pref.h:186</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a5d92875f0034e5fc3d360d97d5992bd4"><div class="ttname"><a href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">_RemminaColorPref::color8</a></div><div class="ttdeci">gchar * color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00122">remmina_pref.h:122</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__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a94d3cf980275b6e9b0c701972f8b1cce"><div class="ttname"><a href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a></div><div class="ttdeci">gchar * remmina_colors_file</div></div>
<div class="ttc" id="struct___remmina_pref_html_a082f698b8aa7cec3c1cb0fd987d4358f"><div class="ttname"><a href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">_RemminaPref::ssh_tcp_keepcnt</a></div><div class="ttdeci">gint ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00170">remmina_pref.h:170</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a999b74e3aab2e7fbc4431e803511b568"><div class="ttname"><a href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">_RemminaPref::applet_new_ontop</a></div><div class="ttdeci">gboolean applet_new_ontop</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00161">remmina_pref.h:161</a></div></div>
@@ -232,14 +229,13 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a920221c2f304bfa278d0944bbbb6e011"><div class="ttname"><a href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">_RemminaPref::datadir_path</a></div><div class="ttdeci">const gchar * datadir_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00134">remmina_pref.h:134</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a8c109e8479617a5e6da0fcaccf511c60"><div class="ttname"><a href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">_RemminaColorPref::color15</a></div><div class="ttdeci">gchar * color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00129">remmina_pref.h:129</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aaff337efd0f03b496a2203068218da7f"><div class="ttname"><a href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">_RemminaColorPref::cursor_foreground</a></div><div class="ttdeci">gchar * cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00109">remmina_pref.h:109</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#l00090">remmina.c:90</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#l00088">remmina.c:88</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ac8e90ea1299ef641fbef1495f899cf97"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">_RemminaColorPref::color11</a></div><div class="ttdeci">gchar * color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00125">remmina_pref.h:125</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a0dd25f5b3a055b936a5fa327bc71f19c"><div class="ttname"><a href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a></div><div class="ttdeci">gboolean remmina_pref_is_rw(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00789">remmina_pref.c:789</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a0dd25f5b3a055b936a5fa327bc71f19c"><div class="ttname"><a href="remmina__pref_8c.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a></div><div class="ttdeci">gboolean remmina_pref_is_rw(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00760">remmina_pref.c:760</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>
<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>
<div class="ttc" id="remmina__string__array_8c_html_a2aaacca7db4b86f836486cfb559398f0"><div class="ttname"><a href="remmina__string__array_8c.html#a2aaacca7db4b86f836486cfb559398f0">remmina_string_array_add</a></div><div class="ttdeci">void remmina_string_array_add(RemminaStringArray *array, const gchar *str)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__array_8c_source.html#l00086">remmina_string_array.c:86</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a85e3d3ef34fb8969211860df159a04d8"><div class="ttname"><a href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">_RemminaPref::color_pref</a></div><div class="ttdeci">RemminaColorPref color_pref</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00233">remmina_pref.h:233</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="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>
<div class="ttc" id="remmina__pref_8c_html_ad6424eb32c9549eb3e26f167dc58c218"><div class="ttname"><a href="remmina__pref_8c.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a></div><div class="ttdeci">void remmina_pref_file_load_colors(GKeyFile *gkeyfile, RemminaColorPref *color_pref)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00176">remmina_pref.c:176</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4eb866c8e08104362aa51f14f5894e51"><div class="ttname"><a href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">_RemminaPref::shortcutkey_viewonly</a></div><div class="ttdeci">guint shortcutkey_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00182">remmina_pref.h:182</a></div></div>
@@ -248,10 +244,10 @@ $(document).ready(function(){initNavTree('remmina__pref_8c_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_aad6660781f636788d5f05b3bac85d676"><div class="ttname"><a href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">_RemminaPref::save_view_mode</a></div><div class="ttdeci">gboolean save_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00139">remmina_pref.h:139</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aa4a65b76fbdc0b3e97d3046f0b48e1ff"><div class="ttname"><a href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">_RemminaColorPref::color1</a></div><div class="ttdeci">gchar * color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00115">remmina_pref.h:115</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a97ad6670df5c399df233f0a74f5c148f"><div class="ttname"><a href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">_RemminaPref::fullscreen_toolbar_visibility</a></div><div class="ttdeci">gint fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00157">remmina_pref.h:157</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a1a695b64e75d6f49de220dc777e57714"><div class="ttname"><a href="remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_usrtimeout(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01135">remmina_pref.c:1135</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a5ed143a13f2a3393e44fd5b2c4fee4be"><div class="ttname"><a href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepidle(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01117">remmina_pref.c:1117</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a1a695b64e75d6f49de220dc777e57714"><div class="ttname"><a href="remmina__pref_8c.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_usrtimeout(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="remmina__pref_8c_html_a5ed143a13f2a3393e44fd5b2c4fee4be"><div class="ttname"><a href="remmina__pref_8c.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepidle(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01081">remmina_pref.c:1081</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a3d7ca8d4ce2e28daebd72e336adef356"><div class="ttname"><a href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">_RemminaPref::grab_color_switch</a></div><div class="ttdeci">gboolean grab_color_switch</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00159">remmina_pref.h:159</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ad7040b17df053835bfb21eb24ae10414"><div class="ttname"><a href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepintvl(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01123">remmina_pref.c:1123</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ad7040b17df053835bfb21eb24ae10414"><div class="ttname"><a href="remmina__pref_8c.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepintvl(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01087">remmina_pref.c:1087</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ad500e50c267d9b98ccf60737a8e5ce60"><div class="ttname"><a href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">_RemminaColorPref::highlight</a></div><div class="ttdeci">gchar * highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00110">remmina_pref.h:110</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/public/remmina__pref_8h.html b/public/remmina__pref_8h.html
index eb6f3f561..4c5c365a2 100644
--- a/public/remmina__pref_8h.html
+++ b/public/remmina__pref_8h.html
@@ -455,7 +455,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00955">955</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00919">919</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -475,7 +475,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01012">1012</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00976">976</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -525,7 +525,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01179">1179</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01143">1143</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -545,7 +545,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00993">993</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00957">957</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.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__pref_8c_source.html#l01090">1090</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01054">1054</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -585,7 +585,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01099">1099</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01063">1063</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -605,7 +605,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01105">1105</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01069">1069</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.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__pref_8c_source.html#l01129">1129</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01093">1093</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -645,7 +645,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01117">1117</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01081">1081</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -665,7 +665,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01123">1123</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01087">1087</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -685,7 +685,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01135">1135</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01099">1099</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -705,7 +705,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01111">1111</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01075">1075</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -725,7 +725,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01165">1165</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01129">1129</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -744,7 +744,6 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>RMNEWS_ENABLE_NEWS is equal to 0 (FALSE) when compiled with -DWiTH_NEWS=OFF, otherwise is value is 1 (TRUE), that is the default value</p>
<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00219">219</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
@@ -766,7 +765,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00789">789</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00760">760</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -796,7 +795,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01048">1048</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01012">1012</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -816,7 +815,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01038">1038</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01002">1002</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -836,7 +835,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01067">1067</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01031">1031</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -856,7 +855,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00799">799</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l00770">770</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -886,7 +885,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01141">1141</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref_8c_source.html#l01105">1105</a> of file <a class="el" href="remmina__pref_8c_source.html">remmina_pref.c</a>.</p>
</div>
</div>
@@ -919,7 +918,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00088">88</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00086">86</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -935,7 +934,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00091">91</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00089">89</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -951,7 +950,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00090">90</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00088">88</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
@@ -967,7 +966,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00089">89</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina_8c_source.html#l00087">87</a> of file <a class="el" href="remmina_8c_source.html">remmina.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__pref_8h_source.html b/public/remmina__pref_8h_source.html
index d267de291..8ed97c94b 100644
--- a/public/remmina__pref_8h_source.html
+++ b/public/remmina__pref_8h_source.html
@@ -86,24 +86,24 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="title">remmina_pref.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__pref_8h.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">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.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__sodium_8h.html">remmina_sodium.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"> 41</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gcrypt.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</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;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Remmina Preference Loader</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> */</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;G_BEGIN_DECLS</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="keyword">enum</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7"> 53</a></span>&#160; <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df"> 54</a></span>&#160; <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a></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"> 57</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a"> 58</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a> = 0,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3"> 59</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3">REMMINA_ACTION_EDIT</a> = 1</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;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f"> 63</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f">UNDEFINED_MODE</a> = 0,</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a"> 64</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a> = 1,</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da322281fd8bd9d95fb410b43ac9d496a3"> 65</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da322281fd8bd9d95fb410b43ac9d496a3">FULLSCREEN_MODE</a> = 2,</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e"> 66</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a> = 3,</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955"> 67</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a> = 4</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;</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__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796"> 71</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a> = 0,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d"> 72</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a> = 1</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__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f"> 76</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a> = 0,</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27"> 77</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a> = 1,</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076"> 78</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a> = 2,</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf"> 79</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a> = 3</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;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33"> 83</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33">REMMINA_TAB_BY_GROUP</a> = 0,</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558"> 84</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a> = 1,</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9"> 85</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9">REMMINA_TAB_ALL</a> = 2,</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631"> 86</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631">REMMINA_TAB_NONE</a> = 3</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;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">/* Remember to add the id 0, 4 and 5 in the remmina pref editor */</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a"> 91</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a">RM_ENC_MODE_SECRET</a> = 0, <span class="comment">/* Using libsecret */</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076"> 92</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076">RM_ENC_MODE_SODIUM_INTERACTIVE</a> = 1, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b"> 93</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b">RM_ENC_MODE_SODIUM_MODERATE</a> = 2, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561"> 94</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561">RM_ENC_MODE_SODIUM_SENSITIVE</a> = 3, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880"> 95</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880">RM_ENC_MODE_GCRYPT</a> = 4, <span class="comment">/* Using GCrypt */</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d"> 96</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d">RM_ENC_MODE_NONE</a> = 5 <span class="comment">/* No encryption */</span></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;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e"> 100</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a> = 0,</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc"> 101</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a> = 1, <span class="comment">//&quot;Invisible&quot; corresponds to the &quot;Hidden&quot; option in the drop-down</span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c"> 102</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a> = 2</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"><a class="line" href="struct___remmina_color_pref.html"> 105</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_color_pref.html">_RemminaColorPref</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">/* Color palette for VTE terminal */</span></div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49"> 107</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500"> 108</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f"> 109</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60"> 110</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf"> 111</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1"> 112</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867"> 113</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808"> 114</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff"> 115</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4"> 116</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316"> 117</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914"> 118</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60"> 119</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9"> 120</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7"> 121</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4"> 122</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc"> 123</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c"> 124</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97"> 125</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928"> 126</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc"> 127</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79"> 128</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60"> 129</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;} <a class="code" href="remmina__pref_8h.html#a058ab9dfe6100245f7c578c2e41d5970">RemminaColorPref</a>;</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"><a class="line" href="struct___remmina_pref.html"> 132</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref.html">_RemminaPref</a> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">/* In RemminaPrefDialog options tab */</span></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011"> 134</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f"> 135</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c"> 136</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35"> 137</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6"> 138</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676"> 139</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef"> 140</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e"> 141</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c"> 142</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644"> 143</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37"> 144</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65"> 145</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365"> 146</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">/* In RemminaPrefDialog appearance tab */</span></div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c"> 148</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c"> 149</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b"> 150</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9"> 151</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95"> 152</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e"> 153</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101"> 154</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d"> 155</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468"> 156</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f"> 157</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df"> 158</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356"> 159</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">/* In RemminaPrefDialog applet tab */</span></div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568"> 161</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd"> 162</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c"> 163</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">/* In RemminaPrefDialog SSH Option tab */</span></div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001"> 165</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7"> 166</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400"> 167</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203"> 168</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd"> 169</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f"> 170</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8"> 171</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">/* In RemminaPrefDialog keyboard tab */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797"> 173</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f"> 174</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47"> 175</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b"> 176</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095"> 177</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a"> 178</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a">shortcutkey_dynres</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765"> 179</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d"> 180</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc"> 181</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51"> 182</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209"> 183</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b"> 184</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7"> 185</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b"> 186</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">/* In RemminaPrefDialog security tab */</span></div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677"> 188</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc"> 189</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651"> 190</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651">unlock_repassword</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972"> 191</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8"> 192</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd"> 193</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5"> 194</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8"> 195</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61"> 196</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">/* In RemminaPrefDialog terminal tab */</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b"> 198</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17"> 199</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22"> 200</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22">vte_system_colors</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850"> 201</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457"> 202</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6"> 203</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad"> 204</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255"> 205</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972"> 206</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5"> 207</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">/* In View menu */</span></div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd"> 209</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0"> 210</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1"> 211</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">/* In tray icon */</span></div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792"> 213</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">/* Auto */</span></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222"> 215</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875"> 216</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6"> 217</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">main_maximize</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0"> 218</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0">main_sort_column_id</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4"> 219</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5"> 220</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">expanded_group</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449"> 221</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21"> 222</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133"> 223</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7"> 224</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">prevent_snap_welcome_message</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e"> 225</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</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; <span class="comment">/* Crypto */</span></div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259"> 228</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a>;</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="comment">/* UID */</span></div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f"> 231</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a>;</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"><a class="line" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8"> 233</a></span>&#160; <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> <a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>;</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"> 235</span>&#160; <span class="comment">/* Usage stats */</span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd"> 236</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd">last_success</a>;</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; <span class="comment">/* Remmina news */</span></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4"> 239</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6"> 240</a></span>&#160; glong <a class="code" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">periodic_rmnews_last_get</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005"> 241</a></span>&#160; glong <a class="code" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">periodic_rmnews_get_count</a>;</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06"> 242</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;} <a class="code" href="remmina__pref_8h.html#a4e34cf29f6a4bff2d79cf621b5370c3b">RemminaPref</a>;</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="preprocessor">#define DEFAULT_SSH_PARSECONFIG TRUE</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#define DEFAULT_SSHTUNNEL_PORT 4732</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor">#define DEFAULT_SSH_PORT 22</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor">#define DEFAULT_SSH_LOGLEVEL 1</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPIDLE 20</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPINTVL 10</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPCNT 3</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_USER_TIMEOUT 60000 // 60 seconds</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword">extern</span> gchar *<a class="code" href="remmina__pref_8h.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">extern</span> gchar *<a class="code" href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="keyword">extern</span> <a class="code" href="struct___remmina_pref.html">RemminaPref</a> <a class="code" href="remmina__pref_8h.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</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;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>(<span class="keywordtype">void</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="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a>(<span class="keyword">const</span> gchar *protocol, <span class="keyword">const</span> gchar *server);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;gchar *<a class="code" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a>(<span class="keyword">const</span> gchar *protocol);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>(<span class="keywordtype">void</span>);</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;guint *<a class="code" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>(<span class="keyword">const</span> gchar *keymap);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;guint <a class="code" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>(<span class="keyword">const</span> gchar *keymap, guint keyval);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;gchar **<a class="code" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395">remmina_pref_keymap_groups</a>(<span class="keywordtype">void</span>);</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;gint <a class="code" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(GKeyFile *gkeyfile, <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> *color_pref);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;gint <a class="code" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a>(<span class="keywordtype">void</span>);</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;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;gchar *<a class="code" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="keyword">const</span> gchar *key);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="keyword">const</span> gchar *key);</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;G_END_DECLS</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
+<a href="remmina__pref_8h.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">#pragma once</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.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__sodium_8h.html">remmina_sodium.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"> 41</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBGCRYPT</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gcrypt.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</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;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Remmina Preference Loader</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> */</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;G_BEGIN_DECLS</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="keyword">enum</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7"> 53</a></span>&#160; <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df"> 54</a></span>&#160; <a class="code" href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a></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"> 57</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a"> 58</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebbad14d19fdcc60e744406c5f80c1bb840a">REMMINA_ACTION_CONNECT</a> = 0,</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3"> 59</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0ed680fdb405e7195d9f14032851eebba84fe14d6d19ab0479931a6886178f2e3">REMMINA_ACTION_EDIT</a> = 1</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;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f"> 63</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e471283504c1e470e4d0e7b8b5842f">UNDEFINED_MODE</a> = 0,</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a"> 64</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291daf963e665cf74d483ccc74e28531a480a">SCROLLED_WINDOW_MODE</a> = 1,</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da322281fd8bd9d95fb410b43ac9d496a3"> 65</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da322281fd8bd9d95fb410b43ac9d496a3">FULLSCREEN_MODE</a> = 2,</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e"> 66</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da86e41f162b3b7d5bf1df78241ca1073e">SCROLLED_FULLSCREEN_MODE</a> = 3,</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955"> 67</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a> = 4</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;</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__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796"> 71</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a9cdc370e02904c1f50681b7fe8bd1796">FLOATING_TOOLBAR_PLACEMENT_TOP</a> = 0,</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d"> 72</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4790f45dcc812c1b00184a2edccdddf5a7ed1345b9857b7029a8e0c61918dd95d">FLOATING_TOOLBAR_PLACEMENT_BOTTOM</a> = 1</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__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f"> 76</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f">TOOLBAR_PLACEMENT_TOP</a> = 0,</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27"> 77</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a> = 1,</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076"> 78</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a> = 2,</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf"> 79</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a> = 3</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;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33"> 83</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556ea18b9b9f60fb377c589ff11b5388fee33">REMMINA_TAB_BY_GROUP</a> = 0,</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558"> 84</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a> = 1,</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9"> 85</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9">REMMINA_TAB_ALL</a> = 2,</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631"> 86</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631">REMMINA_TAB_NONE</a> = 3</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;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">/* Remember to add the id 0, 4 and 5 in the remmina pref editor */</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a"> 91</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53aa57e81572c52d0ea2bbb8dd90b10651a">RM_ENC_MODE_SECRET</a> = 0, <span class="comment">/* Using libsecret */</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076"> 92</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a90f2025ec8d2c4987db5591e8e3b4076">RM_ENC_MODE_SODIUM_INTERACTIVE</a> = 1, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b"> 93</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53ad5263951640011bc43bd8a31f67a9f8b">RM_ENC_MODE_SODIUM_MODERATE</a> = 2, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561"> 94</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561">RM_ENC_MODE_SODIUM_SENSITIVE</a> = 3, <span class="comment">/* Using libsodium */</span></div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880"> 95</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880">RM_ENC_MODE_GCRYPT</a> = 4, <span class="comment">/* Using GCrypt */</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d"> 96</a></span>&#160; <a class="code" href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d">RM_ENC_MODE_NONE</a> = 5 <span class="comment">/* No encryption */</span></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;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">enum</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e"> 100</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a> = 0,</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc"> 101</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a> = 1, <span class="comment">//&quot;Invisible&quot; corresponds to the &quot;Hidden&quot; option in the drop-down</span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c"> 102</a></span>&#160; <a class="code" href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609ad947c85d5ea917958d90298dab033b2c">FLOATING_TOOLBAR_VISIBILITY_DISABLE</a> = 2</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"><a class="line" href="struct___remmina_color_pref.html"> 105</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_color_pref.html">_RemminaColorPref</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">/* Color palette for VTE terminal */</span></div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49"> 107</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500"> 108</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f"> 109</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60"> 110</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf"> 111</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1"> 112</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867"> 113</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808"> 114</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff"> 115</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4"> 116</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316"> 117</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914"> 118</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60"> 119</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9"> 120</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7"> 121</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4"> 122</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc"> 123</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c"> 124</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97"> 125</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928"> 126</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc"> 127</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79"> 128</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60"> 129</a></span>&#160; gchar * <a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;} <a class="code" href="remmina__pref_8h.html#a058ab9dfe6100245f7c578c2e41d5970">RemminaColorPref</a>;</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"><a class="line" href="struct___remmina_pref.html"> 132</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref.html">_RemminaPref</a> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">/* In RemminaPrefDialog options tab */</span></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011"> 134</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f"> 135</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c"> 136</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35"> 137</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6"> 138</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676"> 139</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef"> 140</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e"> 141</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c"> 142</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644"> 143</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37"> 144</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65"> 145</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365"> 146</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">/* In RemminaPrefDialog appearance tab */</span></div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c"> 148</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c"> 149</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a994425a04b78282ff40a05580cc9355c">list_refresh_workaround</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b"> 150</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9"> 151</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95"> 152</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e"> 153</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101"> 154</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d"> 155</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468"> 156</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f"> 157</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df"> 158</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356"> 159</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">/* In RemminaPrefDialog applet tab */</span></div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568"> 161</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd"> 162</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c"> 163</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">/* In RemminaPrefDialog SSH Option tab */</span></div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001"> 165</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7"> 166</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400"> 167</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203"> 168</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd"> 169</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f"> 170</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8"> 171</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">/* In RemminaPrefDialog keyboard tab */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797"> 173</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f"> 174</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47"> 175</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b"> 176</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095"> 177</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a"> 178</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2cc56c093d45511af91c6b05c522c45a">shortcutkey_dynres</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765"> 179</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d"> 180</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc"> 181</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51"> 182</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209"> 183</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b"> 184</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7"> 185</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b"> 186</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">/* In RemminaPrefDialog security tab */</span></div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677"> 188</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc"> 189</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651"> 190</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651">unlock_repassword</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972"> 191</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8"> 192</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd"> 193</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5"> 194</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8"> 195</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61"> 196</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">/* In RemminaPrefDialog terminal tab */</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b"> 198</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17"> 199</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22"> 200</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22">vte_system_colors</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850"> 201</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457"> 202</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6"> 203</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad"> 204</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255"> 205</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972"> 206</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5"> 207</a></span>&#160; guint <a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">/* In View menu */</span></div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd"> 209</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">hide_toolbar</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0"> 210</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">small_toolbutton</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1"> 211</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ab43c3da7d8551c9df726996c540726f1">view_file_mode</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">/* In tray icon */</span></div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792"> 213</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">applet_enable_avahi</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">/* Auto */</span></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222"> 215</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222">main_width</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875"> 216</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#aeb86dc8005c98ce2eab57bd900467875">main_height</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6"> 217</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">main_maximize</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0"> 218</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0">main_sort_column_id</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4"> 219</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4">main_sort_order</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5"> 220</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">expanded_group</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449"> 221</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a62b161b504422d53a766abb3444f8449">toolbar_pin_down</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21"> 222</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">floating_toolbar_placement</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133"> 223</a></span>&#160; gint <a class="code" href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">toolbar_placement</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7"> 224</a></span>&#160; gboolean <a class="code" href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">prevent_snap_welcome_message</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e"> 225</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#ac31f888a39eec7ef6de922c7b53d044e">last_quickconnect_protocol</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; <span class="comment">/* Crypto */</span></div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259"> 228</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">secret</a>;</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="comment">/* UID */</span></div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f"> 231</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#a49c21f0374af5abd5c3034cbc665a17f">uid</a>;</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"><a class="line" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8"> 233</a></span>&#160; <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> <a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>;</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"> 235</span>&#160; <span class="comment">/* Usage stats */</span></div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd"> 236</a></span>&#160; gchar * <a class="code" href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd">last_success</a>;</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;} <a class="code" href="remmina__pref_8h.html#a4e34cf29f6a4bff2d79cf621b5370c3b">RemminaPref</a>;</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="preprocessor">#define DEFAULT_SSH_PARSECONFIG TRUE</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor">#define DEFAULT_SSHTUNNEL_PORT 4732</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor">#define DEFAULT_SSH_PORT 22</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor">#define DEFAULT_SSH_LOGLEVEL 1</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPIDLE 20</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPINTVL 10</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_KEEPCNT 3</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor">#define SSH_SOCKET_TCP_USER_TIMEOUT 60000 // 60 seconds</span></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="keyword">extern</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">extern</span> gchar *<a class="code" href="remmina__pref_8h.html#af657fd4825d16d8d003a8b42fbd0c715">remmina_pref_file</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword">extern</span> gchar *<a class="code" href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keyword">extern</span> <a class="code" href="struct___remmina_pref.html">RemminaPref</a> <a class="code" href="remmina__pref_8h.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">extern</span> gboolean <a class="code" href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a>;</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="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a>(<span class="keyword">const</span> gchar *protocol, <span class="keyword">const</span> gchar *server);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;gchar *<a class="code" href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a>(<span class="keyword">const</span> gchar *protocol);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>(<span class="keywordtype">void</span>);</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;guint *<a class="code" href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a>(<span class="keyword">const</span> gchar *keymap);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;guint <a class="code" href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a>(<span class="keyword">const</span> gchar *keymap, guint keyval);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;gchar **<a class="code" href="remmina__pref_8h.html#a745bbef1d48a7462f8db997821742395">remmina_pref_keymap_groups</a>(<span class="keywordtype">void</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;gint <a class="code" href="remmina__pref_8h.html#a37cd589f00c94cb28eabb1bce4646d0b">remmina_pref_get_scale_quality</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a12e52ee4ab89912280605e36ee069267">remmina_pref_get_ssh_loglevel</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a>(GKeyFile *gkeyfile, <a class="code" href="struct___remmina_color_pref.html">RemminaColorPref</a> *color_pref);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;gint <a class="code" href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;gint <a class="code" href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a>(<span class="keywordtype">void</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;<span class="keywordtype">void</span> <a class="code" href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="keyword">const</span> gchar *key, <span class="keyword">const</span> gchar *value);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;gchar *<a class="code" href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="keyword">const</span> gchar *key);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;gboolean <a class="code" href="remmina__pref_8h.html#a9a8d02227eb703bccc3f9296a5d89d6f">remmina_pref_get_boolean</a>(<span class="keyword">const</span> gchar *key);</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;G_END_DECLS</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
<div class="ttc" id="struct___remmina_pref_html"><div class="ttname"><a href="struct___remmina_pref.html">_RemminaPref</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00132">remmina_pref.h:132</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac95fed56e8995e3361928ebf87505f21"><div class="ttname"><a href="struct___remmina_pref.html#ac95fed56e8995e3361928ebf87505f21">_RemminaPref::floating_toolbar_placement</a></div><div class="ttdeci">gint floating_toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00222">remmina_pref.h:222</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="struct___remmina_pref_html_a3e3d20bf883608e3ff133901d2f4e8d5"><div class="ttname"><a href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">_RemminaPref::vte_shortcutkey_search_text</a></div><div class="ttdeci">guint vte_shortcutkey_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00207">remmina_pref.h:207</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a9a8d02227eb703bccc3f9296a5d89d6f"><div class="ttname"><a href="remmina__pref_8h.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="remmina__pref_8h_html_a9a8d02227eb703bccc3f9296a5d89d6f"><div class="ttname"><a href="remmina__pref_8h.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#l01143">remmina_pref.c:1143</a></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="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__sodium_8h_html"><div class="ttname"><a href="remmina__sodium_8h.html">remmina_sodium.h</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a766ea73df1b7d25866582ec209941de8"><div class="ttname"><a href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">_RemminaPref::lock_connect</a></div><div class="ttdeci">gboolean lock_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00192">remmina_pref.h:192</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__pref_8h_html_a781431450dfcf639c8dd96701be3795b"><div class="ttname"><a href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepcnt(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a781431450dfcf639c8dd96701be3795b"><div class="ttname"><a href="remmina__pref_8h.html#a781431450dfcf639c8dd96701be3795b">remmina_pref_get_ssh_tcp_keepcnt</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepcnt(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01093">remmina_pref.c:1093</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8h.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00976">remmina_pref.c:976</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a316f4290c083d28bd3492ee979278290"><div class="ttname"><a href="remmina__pref_8h.html#a316f4290c083d28bd3492ee979278290">default_resolutions</a></div><div class="ttdeci">const gchar * default_resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00057">remmina_pref.c:57</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a57e104c8ff60943f4a03e2e15c6b2a22"><div class="ttname"><a href="struct___remmina_pref.html#a57e104c8ff60943f4a03e2e15c6b2a22">_RemminaPref::vte_system_colors</a></div><div class="ttdeci">gboolean vte_system_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00200">remmina_pref.h:200</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a5f5bc6d5bc53adaf815444145242a7df"><div class="ttname"><a href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">_RemminaPref::grab_color</a></div><div class="ttdeci">const gchar * grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00158">remmina_pref.h:158</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a90e0cfac442b9e50e0f4857b3ff74255"><div class="ttname"><a href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">_RemminaPref::vte_shortcutkey_increase_font</a></div><div class="ttdeci">guint vte_shortcutkey_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00205">remmina_pref.h:205</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01141">remmina_pref.c:1141</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8h.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eaedb9eb53656e5315bf173ec9d0f5b558">REMMINA_TAB_BY_PROTOCOL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00084">remmina_pref.h:84</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d"><div class="ttname"><a href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a73d0141f2402428694ba28669bed8e8d">RM_ENC_MODE_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00096">remmina_pref.h:96</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a054a55a2c39181609150cbb4d22413ef"><div class="ttname"><a href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">_RemminaPref::default_action</a></div><div class="ttdeci">gint default_action</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00140">remmina_pref.h:140</a></div></div>
@@ -118,7 +118,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a70f73ed240c2ce813dd9fa66fd1a6677"><div class="ttname"><a href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">_RemminaPref::use_primary_password</a></div><div class="ttdeci">gboolean use_primary_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00188">remmina_pref.h:188</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a45d70bbebf5163081d67df3dbb73cc1b"><div class="ttname"><a href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">_RemminaPref::shortcutkey_prevtab</a></div><div class="ttdeci">guint shortcutkey_prevtab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00176">remmina_pref.h:176</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a1d7deb091e0d51a8d7885ad9e22dc9a7"><div class="ttname"><a href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">_RemminaPref::ssh_parseconfig</a></div><div class="ttdeci">gboolean ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00166">remmina_pref.h:166</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8h.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</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="struct___remmina_pref_html_a793ae9c3e2f88eed85551c85d6832ebd"><div class="ttname"><a href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">_RemminaPref::ssh_tcp_keepintvl</a></div><div class="ttdeci">gint ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00169">remmina_pref.h:169</a></div></div>
@@ -138,16 +138,15 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_aeb4afc1d03afffed838149645eccc9dd"><div class="ttname"><a href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd">_RemminaPref::last_success</a></div><div class="ttdeci">gchar * last_success</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00236">remmina_pref.h:236</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7"><div class="ttname"><a href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034ae2bd62151481c5fa5823aa2d66fb67d7">REMMINA_VIEW_FILE_LIST</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00053">remmina_pref.h:53</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae5c3a7fd35cc51f658dda67052440b47"><div class="ttname"><a href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">_RemminaPref::shortcutkey_autofit</a></div><div class="ttdeci">guint shortcutkey_autofit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00175">remmina_pref.h:175</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a0dd25f5b3a055b936a5fa327bc71f19c"><div class="ttname"><a href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a></div><div class="ttdeci">gboolean remmina_pref_is_rw(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00789">remmina_pref.c:789</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a0dd25f5b3a055b936a5fa327bc71f19c"><div class="ttname"><a href="remmina__pref_8h.html#a0dd25f5b3a055b936a5fa327bc71f19c">remmina_pref_is_rw</a></div><div class="ttdeci">gboolean remmina_pref_is_rw(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00760">remmina_pref.c:760</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a99a34af002da68036758fab3ceb08259"><div class="ttname"><a href="struct___remmina_pref.html#a99a34af002da68036758fab3ceb08259">_RemminaPref::secret</a></div><div class="ttdeci">gchar * secret</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00228">remmina_pref.h:228</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01048">remmina_pref.c:1048</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_aaac087c000b0863a296f2739f6344af8"><div class="ttname"><a href="remmina__pref_8h.html#aaac087c000b0863a296f2739f6344af8">remmina_pref_keymap_get_keyval</a></div><div class="ttdeci">guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ab2ca13ee672a2536665f66d544753928"><div class="ttname"><a href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">_RemminaColorPref::color12</a></div><div class="ttdeci">gchar * color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00126">remmina_pref.h:126</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="struct___remmina_color_pref_html_ae560922bd1e57c944f87e444e1159ccf"><div class="ttname"><a href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">_RemminaColorPref::highlight_foreground</a></div><div class="ttdeci">gchar * highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00111">remmina_pref.h:111</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a095f19f07c5ebeb47a89b1bfe23cc21e"><div class="ttname"><a href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">_RemminaPref::scale_quality</a></div><div class="ttdeci">gint scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00141">remmina_pref.h:141</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae63c0c0ec8dbfe8bf665221868661b35"><div class="ttname"><a href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">_RemminaPref::deny_screenshot_clipboard</a></div><div class="ttdeci">gboolean deny_screenshot_clipboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00137">remmina_pref.h:137</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a59eebf1d365ef192de8e14da2c381f37"><div class="ttname"><a href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">_RemminaPref::resolutions</a></div><div class="ttdeci">gchar * resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00144">remmina_pref.h:144</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_ad11e485a8fdb8af1fded85f68f4ba7c4"><div class="ttname"><a href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">_RemminaPref::periodic_news_permitted</a></div><div class="ttdeci">gboolean periodic_news_permitted</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00239">remmina_pref.h:239</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a9c5171c5d8a61cc48171065644613cad"><div class="ttname"><a href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">_RemminaPref::vte_shortcutkey_select_all</a></div><div class="ttdeci">guint vte_shortcutkey_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00204">remmina_pref.h:204</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_ad6424eb32c9549eb3e26f167dc58c218"><div class="ttname"><a href="remmina__pref_8h.html#ad6424eb32c9549eb3e26f167dc58c218">remmina_pref_file_load_colors</a></div><div class="ttdeci">void remmina_pref_file_load_colors(GKeyFile *gkeyfile, RemminaColorPref *color_pref)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00176">remmina_pref.c:176</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_af657fd4825d16d8d003a8b42fbd0c715"><div class="ttname"><a href="remmina__pref_8h.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#l00078">rcw.c:78</a></div></div>
@@ -166,18 +165,17 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4adb8aecbb1eda207dd5e18e665053ac27">TOOLBAR_PLACEMENT_RIGHT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00077">remmina_pref.h:77</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880"><div class="ttname"><a href="remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a315a71c81da464332f675857ae84b880">RM_ENC_MODE_GCRYPT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00095">remmina_pref.h:95</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a3df98a686c4e2703455c1a786d3f1f5c"><div class="ttname"><a href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">_RemminaPref::screenshot_path</a></div><div class="ttdeci">const gchar * screenshot_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00136">remmina_pref.h:136</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a37cd589f00c94cb28eabb1bce4646d0b"><div class="ttname"><a href="remmina__pref_8h.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__pref_8h_html_a745bbef1d48a7462f8db997821742395"><div class="ttname"><a href="remmina__pref_8h.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__pref_8h_html_a37cd589f00c94cb28eabb1bce4646d0b"><div class="ttname"><a href="remmina__pref_8h.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#l01054">remmina_pref.c:1054</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a745bbef1d48a7462f8db997821742395"><div class="ttname"><a href="remmina__pref_8h.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#l01031">remmina_pref.c:1031</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aef2fe0f203dd68ed30d12e3b22a4f972"><div class="ttname"><a href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">_RemminaPref::unlock_timeout</a></div><div class="ttdeci">gint unlock_timeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00191">remmina_pref.h:191</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eafb68a1eeda5303774bbc922ef8d364e9">REMMINA_TAB_ALL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00085">remmina_pref.h:85</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa9a057b8d4095678d3c0806ab37af365"><div class="ttname"><a href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">_RemminaPref::confirm_close</a></div><div class="ttdeci">gboolean confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00146">remmina_pref.h:146</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a0242e9fcc63d6d24257f63fc23077133"><div class="ttname"><a href="struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133">_RemminaPref::toolbar_placement</a></div><div class="ttdeci">gint toolbar_placement</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00223">remmina_pref.h:223</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ae729d4262682c8674b8dd0135014810a"><div class="ttname"><a href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a></div><div class="ttdeci">gboolean extrahardening</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00090">remmina.c:90</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ae729d4262682c8674b8dd0135014810a"><div class="ttname"><a href="remmina__pref_8h.html#ae729d4262682c8674b8dd0135014810a">extrahardening</a></div><div class="ttdeci">gboolean extrahardening</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00088">remmina.c:88</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a18872e092d22f5d3accb66d6a22845d7"><div class="ttname"><a href="struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7">_RemminaPref::prevent_snap_welcome_message</a></div><div class="ttdeci">gboolean prevent_snap_welcome_message</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00224">remmina_pref.h:224</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa8d4c923cb9ca1be451436d1790e8ee5"><div class="ttname"><a href="struct___remmina_pref.html#aa8d4c923cb9ca1be451436d1790e8ee5">_RemminaPref::expanded_group</a></div><div class="ttdeci">gchar * expanded_group</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00220">remmina_pref.h:220</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2ae608a877b349b1af50c2456afda972"><div class="ttname"><a href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">_RemminaPref::vte_shortcutkey_decrease_font</a></div><div class="ttdeci">guint vte_shortcutkey_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00206">remmina_pref.h:206</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00091">remmina.c:91</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_a87044f758cc0e9c975b02c3f94147e06"><div class="ttname"><a href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">_RemminaPref::periodic_rmnews_uuid_prefix</a></div><div class="ttdeci">gchar * periodic_rmnews_uuid_prefix</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00242">remmina_pref.h:242</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_af2649a017ee95bd78adf58fda09c3e58"><div class="ttname"><a href="remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58">disabletrayicon</a></div><div class="ttdeci">gboolean disabletrayicon</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a65b01db52636d3fb896cd8a5c68eb2fc"><div class="ttname"><a href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">_RemminaPref::unlock_password</a></div><div class="ttdeci">const gchar * unlock_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00189">remmina_pref.h:189</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a901034949132f369eb34c4f1ded3a0a6"><div class="ttname"><a href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">_RemminaPref::vte_shortcutkey_paste</a></div><div class="ttdeci">guint vte_shortcutkey_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00203">remmina_pref.h:203</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>
@@ -186,7 +184,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a4f58be8cee9e890445909866d5b11eaf">TOOLBAR_PLACEMENT_LEFT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00079">remmina_pref.h:79</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ad92d70d47d7ad80298efe591955fa8b8"><div class="ttname"><a href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">_RemminaPref::ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00171">remmina_pref.h:171</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a24a8c38ab11389b860d0658812ff7bbc"><div class="ttname"><a href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">_RemminaColorPref::color13</a></div><div class="ttdeci">gchar * color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00127">remmina_pref.h:127</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8h.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a293541cc884cabe4f9b2b3181b3ea9c0"><div class="ttname"><a href="struct___remmina_pref.html#a293541cc884cabe4f9b2b3181b3ea9c0">_RemminaPref::small_toolbutton</a></div><div class="ttdeci">gboolean small_toolbutton</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00210">remmina_pref.h:210</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a363642437f5920c93fe35c07ef3601cc"><div class="ttname"><a href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">_RemminaPref::shortcutkey_grab</a></div><div class="ttdeci">guint shortcutkey_grab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00181">remmina_pref.h:181</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6d77a2663675f01670ed7cc2f14e39c9"><div class="ttname"><a href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">_RemminaPref::always_show_tab</a></div><div class="ttdeci">gboolean always_show_tab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00151">remmina_pref.h:151</a></div></div>
@@ -196,15 +194,14 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a8edfd2a9a9a06b1fd876fbe8742b9ff6"><div class="ttname"><a href="struct___remmina_pref.html#a8edfd2a9a9a06b1fd876fbe8742b9ff6">_RemminaPref::main_maximize</a></div><div class="ttdeci">gboolean main_maximize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00217">remmina_pref.h:217</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609a3e85ac0b56e926949bc162505d199a2e">FLOATING_TOOLBAR_VISIBILITY_PEEKING</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00100">remmina_pref.h:100</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac001e6ac3d70ae6adca7d918898a9651"><div class="ttname"><a href="struct___remmina_pref.html#ac001e6ac3d70ae6adca7d918898a9651">_RemminaPref::unlock_repassword</a></div><div class="ttdeci">const gchar * unlock_repassword</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00190">remmina_pref.h:190</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ad7040b17df053835bfb21eb24ae10414"><div class="ttname"><a href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepintvl(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01123">remmina_pref.c:1123</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ad7040b17df053835bfb21eb24ae10414"><div class="ttname"><a href="remmina__pref_8h.html#ad7040b17df053835bfb21eb24ae10414">remmina_pref_get_ssh_tcp_keepintvl</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepintvl(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01087">remmina_pref.c:1087</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955"><div class="ttname"><a href="remmina__pref_8h.html#a0944a4353780132eeab7b06e3e42291da61339886524adf33eaf7b5df6dd57955">VIEWPORT_FULLSCREEN_MODE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00067">remmina_pref.h:67</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_a1b13dc96ccf8ebad045f02c58eb1d005"><div class="ttname"><a href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">_RemminaPref::periodic_rmnews_get_count</a></div><div class="ttdeci">glong periodic_rmnews_get_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00241">remmina_pref.h:241</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00089">remmina.c:89</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ae0e3cdfa06abe7e29f987421869713e1"><div class="ttname"><a href="remmina__pref_8h.html#ae0e3cdfa06abe7e29f987421869713e1">fullscreen</a></div><div class="ttdeci">gboolean fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00087">remmina.c:87</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ac8ae5e31836066ac69f7c907f30d2ffc"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">_RemminaColorPref::color9</a></div><div class="ttdeci">gchar * color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00123">remmina_pref.h:123</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a2d0facd5a0480a450d525ce9ef4fed60"><div class="ttname"><a href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">_RemminaColorPref::color5</a></div><div class="ttdeci">gchar * color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00119">remmina_pref.h:119</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="struct___remmina_color_pref_html_a1d9bd13f411189c9d8d8a08ceb77e8d7"><div class="ttname"><a href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">_RemminaColorPref::color7</a></div><div class="ttdeci">gchar * color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00121">remmina_pref.h:121</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a98b783e4c5c1dae695fe554f52f94a23"><div class="ttname"><a href="remmina__pref_8h.html#a98b783e4c5c1dae695fe554f52f94a23">remmina_pref_get_ssh_parseconfig</a></div><div class="ttdeci">gboolean remmina_pref_get_ssh_parseconfig(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01069">remmina_pref.c:1069</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a712773f926eb2ec030d6af80cdc33095"><div class="ttname"><a href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">_RemminaPref::shortcutkey_nexttab</a></div><div class="ttdeci">guint shortcutkey_nexttab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00177">remmina_pref.h:177</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_acee9d7384a5e3949df53cdf54390bbcd"><div class="ttname"><a href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">_RemminaPref::applet_hide_count</a></div><div class="ttdeci">gboolean applet_hide_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00162">remmina_pref.h:162</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>
@@ -213,7 +210,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_aecbe4c6a13ec6eda818c9f74c6f63468"><div class="ttname"><a href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">_RemminaPref::tab_mode</a></div><div class="ttdeci">gint tab_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00156">remmina_pref.h:156</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a8cbf300dc913d51365c93f928e0d02fd"><div class="ttname"><a href="struct___remmina_pref.html#a8cbf300dc913d51365c93f928e0d02fd">_RemminaPref::hide_toolbar</a></div><div class="ttdeci">gboolean hide_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00209">remmina_pref.h:209</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a8d7f02ac9b6890ad675b702708bc4af9"><div class="ttname"><a href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">_RemminaColorPref::color6</a></div><div class="ttdeci">gchar * color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00120">remmina_pref.h:120</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01111">remmina_pref.c:1111</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a6982152fd0492586819ce1760a853e99"><div class="ttname"><a href="remmina__pref_8h.html#a6982152fd0492586819ce1760a853e99">remmina_pref_get_sshtunnel_port</a></div><div class="ttdeci">gint remmina_pref_get_sshtunnel_port(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01075">remmina_pref.c:1075</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae4c194f4711959dd2c96492b9a0e7f61"><div class="ttname"><a href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">_RemminaPref::trust_all</a></div><div class="ttdeci">gboolean trust_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00196">remmina_pref.h:196</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_abbd08ed0c74b8f216e633aae6b141792"><div class="ttname"><a href="struct___remmina_pref.html#abbd08ed0c74b8f216e633aae6b141792">_RemminaPref::applet_enable_avahi</a></div><div class="ttdeci">gboolean applet_enable_avahi</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00213">remmina_pref.h:213</a></div></div>
@@ -222,8 +219,8 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="remmina__pref_8h_html_a29701ae152ba15f6d8921f395174d2df"><div class="ttname"><a href="remmina__pref_8h.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#l00079">rcw.c:79</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="struct___remmina_pref_html_aa3dc5f8676c4747f2fcaf9a68d16d11b"><div class="ttname"><a href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">_RemminaPref::shortcutkey_toolbar</a></div><div class="ttdeci">guint shortcutkey_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00186">remmina_pref.h:186</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a1a695b64e75d6f49de220dc777e57714"><div class="ttname"><a href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_usrtimeout(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01135">remmina_pref.c:1135</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a5ed143a13f2a3393e44fd5b2c4fee4be"><div class="ttname"><a href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepidle(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01117">remmina_pref.c:1117</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a1a695b64e75d6f49de220dc777e57714"><div class="ttname"><a href="remmina__pref_8h.html#a1a695b64e75d6f49de220dc777e57714">remmina_pref_get_ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_usrtimeout(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="remmina__pref_8h_html_a5ed143a13f2a3393e44fd5b2c4fee4be"><div class="ttname"><a href="remmina__pref_8h.html#a5ed143a13f2a3393e44fd5b2c4fee4be">remmina_pref_get_ssh_tcp_keepidle</a></div><div class="ttdeci">gint remmina_pref_get_ssh_tcp_keepidle(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01081">remmina_pref.c:1081</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df"><div class="ttname"><a href="remmina__pref_8h.html#aac34dfe6c6b73b43a4656c9dce041034a46530ebfd659963a54b7dae5702af1df">REMMINA_VIEW_FILE_TREE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00054">remmina_pref.h:54</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a5d92875f0034e5fc3d360d97d5992bd4"><div class="ttname"><a href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">_RemminaColorPref::color8</a></div><div class="ttdeci">gchar * color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00122">remmina_pref.h:122</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a94d3cf980275b6e9b0c701972f8b1cce"><div class="ttname"><a href="remmina__pref_8h.html#a94d3cf980275b6e9b0c701972f8b1cce">remmina_colors_file</a></div><div class="ttdeci">gchar * remmina_colors_file</div></div>
@@ -235,19 +232,18 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_pref_html_a332ae31bb6d7376144aeda9b9e11b0f8"><div class="ttname"><a href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">_RemminaPref::audit</a></div><div class="ttdeci">gboolean audit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00195">remmina_pref.h:195</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_af348bb968fd98ba269c4e253750e2400"><div class="ttname"><a href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">_RemminaPref::sshtunnel_port</a></div><div class="ttdeci">gint sshtunnel_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00167">remmina_pref.h:167</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a920221c2f304bfa278d0944bbbb6e011"><div class="ttname"><a href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">_RemminaPref::datadir_path</a></div><div class="ttdeci">const gchar * datadir_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00134">remmina_pref.h:134</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina_8c_source.html#l00088">remmina.c:88</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00993">remmina_pref.c:993</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_a86d25bcf3c47f758f813a175a18b6ff1"><div class="ttname"><a href="remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1">disabletoolbar</a></div><div class="ttdeci">gboolean disabletoolbar</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__pref_8h_html_a0208d5dc8197423da67e5967aafb7a05"><div class="ttname"><a href="remmina__pref_8h.html#a0208d5dc8197423da67e5967aafb7a05">remmina_pref_get_recent</a></div><div class="ttdeci">gchar * remmina_pref_get_recent(const gchar *protocol)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00957">remmina_pref.c:957</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a8c109e8479617a5e6da0fcaccf511c60"><div class="ttname"><a href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">_RemminaColorPref::color15</a></div><div class="ttdeci">gchar * color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00129">remmina_pref.h:129</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aaff337efd0f03b496a2203068218da7f"><div class="ttname"><a href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">_RemminaColorPref::cursor_foreground</a></div><div class="ttdeci">gchar * cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00109">remmina_pref.h:109</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ac8e90ea1299ef641fbef1495f899cf97"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">_RemminaColorPref::color11</a></div><div class="ttdeci">gchar * color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00125">remmina_pref.h:125</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01038">remmina_pref.c:1038</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_aa263ec4481bcac099b7a294fe42179b9"><div class="ttname"><a href="remmina__pref_8h.html#aa263ec4481bcac099b7a294fe42179b9">remmina_pref_keymap_get_table</a></div><div class="ttdeci">guint * remmina_pref_keymap_get_table(const gchar *keymap)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01002">remmina_pref.c:1002</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>
<div class="ttc" id="remmina__pref_8h_html_a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076"><div class="ttname"><a href="remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a95463ce23d03eb31b2bb61c29dab0076">TOOLBAR_PLACEMENT_BOTTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00078">remmina_pref.h:78</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>
<div class="ttc" id="remmina__pref_8h_html_a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc"><div class="ttname"><a href="remmina__pref_8h.html#a458e651af6690959efa2afb96be7d609af179642fefe2ae4787e2d593519010dc">FLOATING_TOOLBAR_VISIBILITY_INVISIBLE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00101">remmina_pref.h:101</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00955">remmina_pref.c:955</a></div></div>
+<div class="ttc" id="remmina__pref_8h_html_ab9e75c6bf39aa93a87d421fc3d742d60"><div class="ttname"><a href="remmina__pref_8h.html#ab9e75c6bf39aa93a87d421fc3d742d60">remmina_pref_add_recent</a></div><div class="ttdeci">void remmina_pref_add_recent(const gchar *protocol, const gchar *server)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00919">remmina_pref.c:919</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a85e3d3ef34fb8969211860df159a04d8"><div class="ttname"><a href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">_RemminaPref::color_pref</a></div><div class="ttdeci">RemminaColorPref color_pref</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00233">remmina_pref.h:233</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="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>
<div class="ttc" id="struct___remmina_pref_html_a4eb866c8e08104362aa51f14f5894e51"><div class="ttname"><a href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">_RemminaPref::shortcutkey_viewonly</a></div><div class="ttdeci">guint shortcutkey_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00182">remmina_pref.h:182</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a058ab9dfe6100245f7c578c2e41d5970"><div class="ttname"><a href="remmina__pref_8h.html#a058ab9dfe6100245f7c578c2e41d5970">RemminaColorPref</a></div><div class="ttdeci">struct _RemminaColorPref RemminaColorPref</div></div>
@@ -259,7 +255,7 @@ $(document).ready(function(){initNavTree('remmina__pref_8h_source.html','');});
<div class="ttc" id="struct___remmina_color_pref_html_aa4a65b76fbdc0b3e97d3046f0b48e1ff"><div class="ttname"><a href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">_RemminaColorPref::color1</a></div><div class="ttdeci">gchar * color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00115">remmina_pref.h:115</a></div></div>
<div class="ttc" id="remmina__pref_8h_html_a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631"><div class="ttname"><a href="remmina__pref_8h.html#a96a58e29e8dbf2b5bdeb775cba46556eadc41dc23d32d8955a469953bee975631">REMMINA_TAB_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00086">remmina_pref.h:86</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a97ad6670df5c399df233f0a74f5c148f"><div class="ttname"><a href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">_RemminaPref::fullscreen_toolbar_visibility</a></div><div class="ttdeci">gint fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00157">remmina_pref.h:157</a></div></div>
-<div class="ttc" id="remmina__pref_8h_html_a12e52ee4ab89912280605e36ee069267"><div class="ttname"><a href="remmina__pref_8h.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="remmina__pref_8h_html_a12e52ee4ab89912280605e36ee069267"><div class="ttname"><a href="remmina__pref_8h.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#l01063">remmina_pref.c:1063</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a3d7ca8d4ce2e28daebd72e336adef356"><div class="ttname"><a href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">_RemminaPref::grab_color_switch</a></div><div class="ttdeci">gboolean grab_color_switch</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00159">remmina_pref.h:159</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ad500e50c267d9b98ccf60737a8e5ce60"><div class="ttname"><a href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">_RemminaColorPref::highlight</a></div><div class="ttdeci">gchar * highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00110">remmina_pref.h:110</a></div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/public/remmina__pref__dialog_8c.html b/public/remmina__pref__dialog_8c.html
index 4b614880c..fccebff07 100644
--- a/public/remmina__pref__dialog_8c.html
+++ b/public/remmina__pref__dialog_8c.html
@@ -177,7 +177,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00395">395</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00392">392</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -237,7 +237,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00424">424</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00421">421</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -257,7 +257,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00847">847</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00840">840</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -285,7 +285,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00445">445</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00442">442</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -315,7 +315,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00691">691</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00686">686</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -449,7 +449,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00435">435</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00432">432</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -479,7 +479,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00418">418</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00415">415</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__pref__dialog_8c_source.html b/public/remmina__pref__dialog_8c_source.html
index 16123ca39..be685502e 100644
--- a/public/remmina__pref__dialog_8c_source.html
+++ b/public/remmina__pref__dialog_8c_source.html
@@ -86,88 +86,87 @@ $(document).ready(function(){initNavTree('remmina__pref__dialog_8c_source.html',
<div class="title">remmina_pref_dialog.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__pref__dialog_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 &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;vte/vte.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</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__log_8h.html">remmina_log.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__file__manager_8h.html">remmina_file_manager.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__sodium_8h.html">remmina_sodium.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__passwd_8h.html">remmina_passwd.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__public_8h.html">remmina_public.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__string__list_8h.html">remmina_string_list.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__widget__pool_8h.html">remmina_widget_pool.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="remmina__key__chooser_8h.html">remmina_key_chooser.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__plugin__manager_8h.html">remmina_plugin_manager.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__icon_8h.html">remmina_icon.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_8h.html">remmina_pref.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__pref__dialog_8h.html">remmina_pref_dialog.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__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368"> 58</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *<a class="code" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368">remmina_pref_dialog</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(remmina_pref_dialog-&gt;builder, object_name)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257"> 62</a></span>&#160;<span class="keyword">static</span> GActionEntry <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>[] = {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; { <span class="stringliteral">&quot;close&quot;</span>, <a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>, NULL, NULL, NULL },</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;</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="comment">/* Show a key chooser dialog */</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a7576b68fbb2a0497d7ac51eb0633e877"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a7576b68fbb2a0497d7ac51eb0633e877">remmina_pref_dialog_on_key_chooser</a>(GtkWidget *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="struct___remmina_key_chooser_arguments.html">RemminaKeyChooserArguments</a> *arguments;</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"> 73</span>&#160; g_return_if_fail(GTK_IS_BUTTON(widget));</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; arguments = <a class="code" href="remmina__key__chooser_8c.html#a9e8586623c819a2e24b6d7b1d3efde94">remmina_key_chooser_new</a>(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), FALSE);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_CANCEL &amp;&amp; arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_DELETE_EVENT) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; gchar *val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#ad6bf8db773a58c4b73ce7902f76a860f">keyval</a>, arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#ac3b1c476480609afbbe21a2bb507e14c">state</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; gtk_button_set_label(GTK_BUTTON(widget), val);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; g_free(val);</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; g_free(arguments);</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;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">/* Show the available resolutions list dialog */</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ad4b3f23a900c8f07814fd0fb26f29e5f"> 85</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ad4b3f23a900c8f07814fd0fb26f29e5f">remmina_pref_on_button_resolutions_clicked</a>(GtkWidget *widget, gpointer user_data)</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; GtkDialog *dialog = <a class="code" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list_new</a>(FALSE, NULL);</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; <a class="code" href="remmina__string__list_8c.html#a500b85eafd23280f998d2980d1eba80e">remmina_string_list_set_validation_func</a>(<a class="code" href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public_resolution_validation_func</a>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list_set_text</a>(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>, TRUE);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">&quot;Resolutions&quot;</span>), _(<span class="stringliteral">&quot;Configure the available resolutions&quot;</span>));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = <a class="code" href="remmina__string__list_8c.html#a74058eac0af28c05a55d041103457aec">remmina_string_list_get_text</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">/* Re-initialize the remmina_pref_init to reload the color scheme when a color scheme</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * file is selected*/</span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a50dcebddc0891688ae179ba940d21fd1"> 102</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a50dcebddc0891688ae179ba940d21fd1">remmina_pref_on_color_scheme_selected</a>(GtkWidget *widget, 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; gchar *sourcepath;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; gchar *remmina_dir;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; gchar *destpath;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; GFile *source;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; GFile *destination;</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; sourcepath = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; source = g_file_new_for_path(sourcepath);</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; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">/* /home/foo/.config/remmina */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; destpath = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.colors&quot;</span>, remmina_dir);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; destination = g_file_new_for_path(destpath);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (g_file_test(sourcepath, G_FILE_TEST_IS_REGULAR)) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; g_file_copy(source,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; destination,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; G_FILE_COPY_OVERWRITE,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; NULL,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; NULL,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; NULL,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; NULL);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">/* Here we should reinitialize the widget */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; gtk_file_chooser_set_file(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>, source, NULL);</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; g_free(sourcepath);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_free(remmina_dir);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_free(destpath);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; g_object_unref(source);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;}</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"><a class="line" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662"> 136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662">remmina_pref_dialog_clear_recent</a>(GtkWidget *widget, gpointer user_data)</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; GtkDialog *dialog;</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"> 141</span>&#160; <a class="code" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; _(<span class="stringliteral">&quot;Recent lists cleared.&quot;</span>)));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">/* Configure custom keystrokes to send to the plugins */</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131"> 150</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131">remmina_pref_on_button_keystrokes_clicked</a>(GtkWidget *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; GtkDialog *dialog = <a class="code" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list_new</a>(TRUE, STRING_DELIMITOR2);</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; <a class="code" href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list_set_text</a>(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>, TRUE);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">&quot;Keystrokes&quot;</span>), _(<span class="stringliteral">&quot;Configure the keystrokes&quot;</span>));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = <a class="code" href="remmina__string__list_8c.html#a74058eac0af28c05a55d041103457aec">remmina_string_list_get_text</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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"><a class="line" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef"> 164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef">remmina_prefdiag_on_grab_color_activated</a>(GtkSwitch *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;entry_grab_color %d&quot;, gtk_switch_get_active(widget));</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>), gtk_switch_get_active(widget));</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;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">/* connect to notify::active or toggled (in this case ::toggled */</span></div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a9bf2ea132069b7fa70b4aa5f94b8fa21"> 172</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a9bf2ea132069b7fa70b4aa5f94b8fa21">remmina_prefdiag_on_use_password_activated</a>(GtkSwitch *sw, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Use Primary Password %d&quot;, gtk_switch_get_active(sw));</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (gtk_switch_get_active(sw)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;use_password activated&quot;);</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; gchar *unlock_password = NULL;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; unlock_password = g_strdup(<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), TRUE);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), TRUE);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Password from preferences is: %s&quot;, unlock_password);</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (unlock_password == NULL || unlock_password[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a> (GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), &amp;unlock_password)) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Password is: %s&quot;, unlock_password);</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, g_strdup(unlock_password));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_strdup(unlock_password);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</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; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; g_free(unlock_password), unlock_password = NULL;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;use_password deactivated&quot;);</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), FALSE);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), FALSE);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</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"> 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"><a class="line" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1"> 203</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>(GSimpleAction *action, GVariant *param, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; GtkSettings *settings = gtk_settings_get_default();</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; 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="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69"> 212</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69">remmina_pref_dialog_on_close_clicked</a>(GtkWidget *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</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;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d"> 218</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d">remmina_pref_on_dialog_destroy</a>(GtkWidget *widget, gpointer user_data)</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"> 220</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; gboolean b;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; GdkRGBA color;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; gboolean rebuild_remmina_icon = FALSE;</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</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#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> == NULL)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>));</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</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; b = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a>));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a> = b;</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> &lt;= 0)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = DEFAULT_SSHTUNNEL_PORT;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</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#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> &lt;= 0)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> &lt;= 0)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</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#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> &lt;= 0)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> &lt;= 0)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>));</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>));</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</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#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> &lt; 0)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = 0;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>));</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</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#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> &lt; 10)</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 10;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> &gt; 500)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 500;</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</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#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> &lt; 0)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = 0;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>));</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>));</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>));</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</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#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a> != b) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</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> = b;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; rebuild_remmina_icon = 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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = gtk_switch_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>);</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; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</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#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> != b) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = b;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; rebuild_remmina_icon = TRUE;</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; <span class="keywordflow">if</span> (b)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; b = FALSE;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__icon_8c.html#a5b1bc5b1130b31ea9c9cb7164fb82f1d">remmina_icon_set_autostart</a>(b);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (rebuild_remmina_icon) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a>();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="remmina__icon_8c.html#af80ed314f91d653237249d839c7fc3b2">remmina_icon_populate_menu</a>();</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>));</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>));</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>));</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>));</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>));</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>));</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; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>)))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = NULL;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = g_strdup(gtk_font_chooser_get_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>)));</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>));</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &amp;color);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &amp;color);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &amp;color);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &amp;color);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &amp;color);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &amp;color);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &amp;color);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &amp;color);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &amp;color);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &amp;color);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &amp;color);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &amp;color);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &amp;color);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &amp;color);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &amp;color);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &amp;color);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &amp;color);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &amp;color);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &amp;color);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &amp;color);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &amp;color);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &amp;color);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &amp;color);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>));</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>));</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>));</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>));</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>));</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; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>();</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = NULL;</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"><a class="line" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4"> 395</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a>(gchar *name, <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin, gpointer user_data)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="struct___remmina_pref_plugin.html">RemminaPrefPlugin</a> *pref_plugin;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; GtkWidget *vbox;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; GtkWidget *widget;</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; pref_plugin = (<a class="code" href="struct___remmina_pref_plugin.html">RemminaPrefPlugin</a> *)plugin;</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; widget = gtk_label_new(pref_plugin-&gt;<a class="code" href="struct___remmina_pref_plugin.html#a9ea805605a462db2ce7912ef05a4fd9d">pref_label</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; gtk_widget_set_halign(widget, GTK_ALIGN_END);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; gtk_widget_show(widget);</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; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; gtk_widget_show(vbox);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; gtk_notebook_append_page(GTK_NOTEBOOK(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>), vbox, widget);</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; widget = pref_plugin-&gt;<a class="code" href="struct___remmina_pref_plugin.html#a377073db6f59790bfc3f69c62d4715e4">get_pref_body</a>(pref_plugin);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);</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; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc"> 418</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc">remmina_pref_dialog_vte_font_on_toggled</a>(GtkSwitch *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), !gtk_switch_get_active(widget));</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;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a"> 424</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a">remmina_pref_dialog_disable_tray_icon_on_toggled</a>(GtkWidget *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; gboolean b;</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; b = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), b);</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;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="comment">/* Helper function for remmina_pref_dialog_init() */</span></div><div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59"> 435</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(GtkButton *button, guint keyval)</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; gchar *val;</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; val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(keyval, 0);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; gtk_button_set_label(button, val);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; g_free(val);</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;<span class="comment">/* Remmina preferences initialization */</span></div><div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344"> 445</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;{</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; gchar buf[100];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; GdkRGBA color;</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;<span class="preprocessor">#if !defined (HAVE_LIBSSH) || !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; GtkWidget *align;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor">#endif</span></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;<span class="preprocessor">#if !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;alignment_terminal&quot;</span>));</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="preprocessor">#endif</span></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;<span class="preprocessor">#if !defined (HAVE_LIBSSH)</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;alignment_ssh&quot;</span>));</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor">#endif</span></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; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), TRUE);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>), TRUE);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), FALSE);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), FALSE);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// TRANSLATORS: Do not translate libsodium, is the name of a library</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), _(<span class="stringliteral">&quot;libsodium &gt;= 1.9.0 is required to use Primary Password&quot;</span>));</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), FALSE);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), FALSE);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>), FALSE);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>), TRUE);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</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#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a> != NULL)</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <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="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;%G_%P_%N_%h.remmina&quot;</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; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>), <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="l00495"></a><span class="lineno"> 495</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a>), <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="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a>);</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; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>, buf);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>, buf);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>, buf);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>, buf);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>, buf);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>, buf);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>, buf);</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="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), <a class="code" href="remmina__icon_8c.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon_is_autostart</a>());</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), !<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = TRUE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>), FALSE);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>), FALSE);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>), FALSE);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), FALSE);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor">#endif</span></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; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>);</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; <span class="keywordflow">if</span> (!(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> &amp;&amp; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>[0]))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>), TRUE);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</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#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> &amp;&amp; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>[0]) {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <span class="stringliteral">&quot;Monospace 12&quot;</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), FALSE);</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; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>);</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">/* Foreground color option */</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &amp;color);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">/* Background color option */</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &amp;color);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">/* Cursor color option */</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &amp;color);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &amp;color);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">/* Highlight color option */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &amp;color);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &amp;color);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">/* Bold color option */</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &amp;color);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="comment">/* 16 colors */</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &amp;color);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &amp;color);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &amp;color);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &amp;color);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &amp;color);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &amp;color);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &amp;color);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &amp;color);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &amp;color);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &amp;color);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &amp;color);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &amp;color);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &amp;color);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &amp;color);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &amp;color);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &amp;color);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor">#if !VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">/* Disable color scheme buttons if old version of VTE */</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), FALSE);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), FALSE);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), FALSE);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), FALSE);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), FALSE);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), FALSE);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), FALSE);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), FALSE);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), FALSE);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), FALSE);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), FALSE);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), FALSE);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), FALSE);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), FALSE);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), FALSE);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), FALSE);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), FALSE);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), FALSE);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), FALSE);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), FALSE);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), FALSE);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>, buf);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>, buf);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="preprocessor">#endif</span></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; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>, <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="l00643"></a><span class="lineno"> 643</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>, <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="l00646"></a><span class="lineno"> 646</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</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#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> != NULL &amp;&amp; strlen(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>) &gt; 0)</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>, <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>());</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</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#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a> != NULL)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <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="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;%G_%P_%N_%h.remmina&quot;</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</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#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> != NULL)</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>, g_get_home_dir());</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</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#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> != NULL)</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <span class="stringliteral">&quot;remmina_%p_%h_%Y%m%d-%H%M%S&quot;</span>);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; gtk_switch_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</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#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> != NULL)</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a>);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;#00FF00&quot;</span>);</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; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>);</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; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>);</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; <a class="code" href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a>(<a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa682ab42b3f4af3dd93452efdb76b8757">REMMINA_PLUGIN_TYPE_PREF</a>, <a class="code" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a>, remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</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; g_signal_connect(G_OBJECT(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d">remmina_pref_on_dialog_destroy</a>), NULL);</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_object_set_data(G_OBJECT(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;tag&quot;</span>, <span class="stringliteral">&quot;remmina-pref-dialog&quot;</span>);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;}</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458"> 691</a></span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(gint default_tab, GtkWindow *parent)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; GSimpleActionGroup *actions;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; GtkAccelGroup *accel_group = NULL;</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; remmina_pref_dialog = g_new0(<a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a>, 1);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">priv</a> = g_new0(<a class="code" href="struct___remmina_pref_dialog_priv.html">RemminaPrefDialogPriv</a>, 1);</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">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_preferences.glade&quot;</span>);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = GTK_WIDGET(gtk_builder_get_object(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, <span class="stringliteral">&quot;RemminaPrefDialog&quot;</span>));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), parent);</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a> = GTK_NOTEBOOK(GET_OBJECT(<span class="stringliteral">&quot;notebook_preferences&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;filechooserbutton_options_datadir_path&quot;</span>));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_file_name&quot;</span>));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;filechooserbutton_options_screenshots_path&quot;</span>));</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_screenshot_name&quot;</span>));</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_deny_screenshot_clipboard&quot;</span>));</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_remember_last_view_mode&quot;</span>));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_confirm_close&quot;</span>));</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_use_primary_password&quot;</span>));</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;unlock_timeout&quot;</span>));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_lock_connect&quot;</span>));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_lock_edit&quot;</span>));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_security_enc_method&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_audit&quot;</span>));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_trust_all&quot;</span>));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_options_save_settings&quot;</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_fullscreen_on_auto&quot;</span>));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_show_tabs&quot;</span>));</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_show_notes&quot;</span>));</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_hide_toolbar&quot;</span>));</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_hide_searchbar&quot;</span>));</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_permit_news&quot;</span>));</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a>), RMNEWS_ENABLE_NEWS);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_double_click&quot;</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_view_mode&quot;</span>));</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_tab_interface&quot;</span>));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_fullscreen_toolbar_visibility&quot;</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_scale_quality&quot;</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_options_ssh_parseconfig&quot;</span>));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_ssh_loglevel&quot;</span>));</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_port&quot;</span>));</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepidle&quot;</span>));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepintvl&quot;</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepcnt&quot;</span>));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_usrtimeout&quot;</span>));</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_scroll&quot;</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_recent_items&quot;</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_grab_color&quot;</span>));</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_appearance_grab_color&quot;</span>));</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_options_recent_items_clear&quot;</span>));</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_new_connection_on_top&quot;</span>));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_hide_totals&quot;</span>));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_disable_tray&quot;</span>));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_dark_theme&quot;</span>));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_start_in_tray&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_host_key&quot;</span>));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_fullscreen&quot;</span>));</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_auto_fit&quot;</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_switch_tab_left&quot;</span>));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_switch_tabright&quot;</span>));</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_scaled&quot;</span>));</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_grab_keyboard&quot;</span>));</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_multimon&quot;</span>));</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_screenshot&quot;</span>));</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_viewonly&quot;</span>));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_minimize&quot;</span>));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_disconnect&quot;</span>));</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_toolbar&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_terminal_font_system&quot;</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a> = GTK_FONT_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;fontbutton_terminal_font&quot;</span>));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_terminal_bold&quot;</span>));</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_scrollback_lines&quot;</span>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_copy&quot;</span>));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_paste&quot;</span>));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_select_all&quot;</span>));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_increase_font&quot;</span>));</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_decrease_font&quot;</span>));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_search_text&quot;</span>));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_foreground&quot;</span>));</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_foreground&quot;</span>));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_background&quot;</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_background&quot;</span>));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_cursor_color&quot;</span>));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_cursor&quot;</span>));</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_cursor_foreground&quot;</span>));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_highlight&quot;</span>));</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_highlight_foreground&quot;</span>));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_bold_color&quot;</span>));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_colorBD&quot;</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_normal_colors&quot;</span>));</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color0&quot;</span>));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color1&quot;</span>));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color2&quot;</span>));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color3&quot;</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color4&quot;</span>));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color5&quot;</span>));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color6&quot;</span>));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color7&quot;</span>));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_bright_colors&quot;</span>));</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color8&quot;</span>));</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color9&quot;</span>));</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color10&quot;</span>));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color11&quot;</span>));</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color12&quot;</span>));</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color13&quot;</span>));</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color14&quot;</span>));</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color15&quot;</span>));</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="preprocessor">#if VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keyword">const</span> gchar *remmina_dir;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; gchar *destpath;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; destpath = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.colors&quot;</span>, remmina_dir);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;button_term_cs&quot;</span>));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keyword">const</span> gchar *fc_tooltip_text = g_strconcat(_(<span class="stringliteral">&quot;Picking a terminal colouring file replaces the file: &quot;</span>),</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="stringliteral">&quot;\n&quot;</span>,</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; destpath,</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="stringliteral">&quot;\n&quot;</span>,</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; _(<span class="stringliteral">&quot;This file contains the “Custom” terminal colour scheme selectable from the “Advanced” tab of terminal connections and editable in the “Terminal” tab in the settings.&quot;</span>),</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; NULL);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>), fc_tooltip_text);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>), REMMINA_RUNTIME_TERM_CS_DIR);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; g_free(destpath);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; actions = g_simple_action_group_new();</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>), remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; gtk_widget_insert_action_group(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;pref&quot;</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>), remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; g_object_unref(actions);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; accel_group = gtk_accel_group_new();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; gtk_window_add_accel_group(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), accel_group);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; g_cclosure_new_swap(G_CALLBACK(<a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>), NULL, NULL));</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; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; gtk_builder_connect_signals(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, NULL);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a>();</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; <span class="keywordflow">if</span> (default_tab &gt; 0)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; gtk_notebook_set_current_page(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>, default_tab);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">return</span> remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</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;</div><div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29"> 847</a></span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a>()</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;{</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">if</span> (!remmina_pref_dialog)</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;}</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</a></div></div>
+<a href="remmina__pref__dialog_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 &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;vte/vte.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#endif</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__log_8h.html">remmina_log.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__file__manager_8h.html">remmina_file_manager.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__sodium_8h.html">remmina_sodium.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__passwd_8h.html">remmina_passwd.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__public_8h.html">remmina_public.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__string__list_8h.html">remmina_string_list.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__widget__pool_8h.html">remmina_widget_pool.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="remmina__key__chooser_8h.html">remmina_key_chooser.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__plugin__manager_8h.html">remmina_plugin_manager.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__icon_8h.html">remmina_icon.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_8h.html">remmina_pref.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__pref__dialog_8h.html">remmina_pref_dialog.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__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368"> 58</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *<a class="code" href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368">remmina_pref_dialog</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#define GET_OBJECT(object_name) gtk_builder_get_object(remmina_pref_dialog-&gt;builder, object_name)</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257"> 62</a></span>&#160;<span class="keyword">static</span> GActionEntry <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>[] = {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; { <span class="stringliteral">&quot;close&quot;</span>, <a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>, NULL, NULL, NULL },</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;</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="comment">/* Show a key chooser dialog */</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a7576b68fbb2a0497d7ac51eb0633e877"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a7576b68fbb2a0497d7ac51eb0633e877">remmina_pref_dialog_on_key_chooser</a>(GtkWidget *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="struct___remmina_key_chooser_arguments.html">RemminaKeyChooserArguments</a> *arguments;</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"> 73</span>&#160; g_return_if_fail(GTK_IS_BUTTON(widget));</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; arguments = <a class="code" href="remmina__key__chooser_8c.html#a9e8586623c819a2e24b6d7b1d3efde94">remmina_key_chooser_new</a>(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), FALSE);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_CANCEL &amp;&amp; arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">response</a> != GTK_RESPONSE_DELETE_EVENT) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; gchar *val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#ad6bf8db773a58c4b73ce7902f76a860f">keyval</a>, arguments-&gt;<a class="code" href="struct___remmina_key_chooser_arguments.html#ac3b1c476480609afbbe21a2bb507e14c">state</a>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; gtk_button_set_label(GTK_BUTTON(widget), val);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; g_free(val);</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; g_free(arguments);</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;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">/* Show the available resolutions list dialog */</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ad4b3f23a900c8f07814fd0fb26f29e5f"> 85</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ad4b3f23a900c8f07814fd0fb26f29e5f">remmina_pref_on_button_resolutions_clicked</a>(GtkWidget *widget, gpointer user_data)</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; GtkDialog *dialog = <a class="code" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list_new</a>(FALSE, NULL);</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; <a class="code" href="remmina__string__list_8c.html#a500b85eafd23280f998d2980d1eba80e">remmina_string_list_set_validation_func</a>(<a class="code" href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public_resolution_validation_func</a>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list_set_text</a>(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>, TRUE);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">&quot;Resolutions&quot;</span>), _(<span class="stringliteral">&quot;Configure the available resolutions&quot;</span>));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">resolutions</a> = <a class="code" href="remmina__string__list_8c.html#a74058eac0af28c05a55d041103457aec">remmina_string_list_get_text</a>();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">/* Re-initialize the remmina_pref_init to reload the color scheme when a color scheme</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * file is selected*/</span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a50dcebddc0891688ae179ba940d21fd1"> 102</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a50dcebddc0891688ae179ba940d21fd1">remmina_pref_on_color_scheme_selected</a>(GtkWidget *widget, 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; gchar *sourcepath;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; gchar *remmina_dir;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; gchar *destpath;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; GFile *source;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; GFile *destination;</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; sourcepath = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; source = g_file_new_for_path(sourcepath);</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; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">/* /home/foo/.config/remmina */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; destpath = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.colors&quot;</span>, remmina_dir);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; destination = g_file_new_for_path(destpath);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (g_file_test(sourcepath, G_FILE_TEST_IS_REGULAR)) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; g_file_copy(source,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; destination,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; G_FILE_COPY_OVERWRITE,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; NULL,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; NULL,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; NULL,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; NULL);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">/* Here we should reinitialize the widget */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; gtk_file_chooser_set_file(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>, source, NULL);</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; g_free(sourcepath);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g_free(remmina_dir);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; g_free(destpath);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; g_object_unref(source);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;}</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"><a class="line" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662"> 136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662">remmina_pref_dialog_clear_recent</a>(GtkWidget *widget, gpointer user_data)</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; GtkDialog *dialog;</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"> 141</span>&#160; <a class="code" href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; dialog = GTK_DIALOG(gtk_message_dialog_new(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; _(<span class="stringliteral">&quot;Recent lists cleared.&quot;</span>)));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">/* Configure custom keystrokes to send to the plugins */</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131"> 150</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131">remmina_pref_on_button_keystrokes_clicked</a>(GtkWidget *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; GtkDialog *dialog = <a class="code" href="remmina__string__list_8c.html#a11147c41297537effe55f18a63ce9f7e">remmina_string_list_new</a>(TRUE, STRING_DELIMITOR2);</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; <a class="code" href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list_set_text</a>(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>, TRUE);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a>(_(<span class="stringliteral">&quot;Keystrokes&quot;</span>), _(<span class="stringliteral">&quot;Configure the keystrokes&quot;</span>));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; gtk_dialog_run(dialog);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a086c9b0fe4bcfe0e5349422d17886d65">keystrokes</a> = <a class="code" href="remmina__string__list_8c.html#a74058eac0af28c05a55d041103457aec">remmina_string_list_get_text</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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"><a class="line" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef"> 164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef">remmina_prefdiag_on_grab_color_activated</a>(GtkSwitch *widget, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;entry_grab_color %d&quot;, gtk_switch_get_active(widget));</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>), gtk_switch_get_active(widget));</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;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">/* connect to notify::active or toggled (in this case ::toggled */</span></div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a9bf2ea132069b7fa70b4aa5f94b8fa21"> 172</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a9bf2ea132069b7fa70b4aa5f94b8fa21">remmina_prefdiag_on_use_password_activated</a>(GtkSwitch *sw, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Use Primary Password %d&quot;, gtk_switch_get_active(sw));</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (gtk_switch_get_active(sw)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;use_password activated&quot;);</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; gchar *unlock_password = NULL;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; unlock_password = g_strdup(<a class="code" href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), TRUE);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), TRUE);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Password from preferences is: %s&quot;, unlock_password);</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (unlock_password == NULL || unlock_password[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a> (GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), &amp;unlock_password)) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;Password is: %s&quot;, unlock_password);</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, g_strdup(unlock_password));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = g_strdup(unlock_password);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</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; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; g_free(unlock_password), unlock_password = NULL;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">//REMMINA_DEBUG (&quot;use_password deactivated&quot;);</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), FALSE);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gtk_widget_set_sensitive (GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), FALSE);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">unlock_password</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a>(<span class="stringliteral">&quot;unlock_password&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</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"> 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"><a class="line" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1"> 203</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>(GSimpleAction *action, GVariant *param, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">/* Switch to a dark theme if the user enabled it */</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; GtkSettings *settings = gtk_settings_get_default();</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; 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="l00211"></a><span class="lineno"> 211</span>&#160;}</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69"> 212</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69">remmina_pref_dialog_on_close_clicked</a>(GtkWidget *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; gtk_widget_destroy(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</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;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d"> 218</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d">remmina_pref_on_dialog_destroy</a>(GtkWidget *widget, gpointer user_data)</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"> 220</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; gboolean b;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; GdkRGBA color;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; gboolean rebuild_remmina_icon = FALSE;</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</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#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> == NULL)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a788378c190a4ec0ebcf60c570f3b50d5">enc_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> = gtk_file_chooser_get_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>));</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a320861799b86dc076d5f87e3a216eb95">always_show_notes</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae293a1fa591d3db78bd587c5af9c9101">hide_searchbar</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">default_action</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a> = gtk_combo_box_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</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#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> &lt;= 0)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a> = DEFAULT_SSHTUNNEL_PORT;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</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#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> &lt;= 0)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a> = SSH_SOCKET_TCP_KEEPIDLE;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</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#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> &lt;= 0)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a> = SSH_SOCKET_TCP_KEEPINTVL;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</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#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> &lt;= 0)</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a> = SSH_SOCKET_TCP_KEEPCNT;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</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#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> &lt;= 0)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a> = SSH_SOCKET_TCP_USER_TIMEOUT;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</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#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> &lt; 0)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a> = 0;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#endif</span></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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</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#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> &lt; 10)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 10;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> &gt; 500)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a> = 500;</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>));</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</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#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a> &lt; 0)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a> = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</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#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a> != b) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</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> = b;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; rebuild_remmina_icon = TRUE;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</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; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a> = gtk_switch_get_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> = gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>);</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; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</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#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> != b) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = b;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; rebuild_remmina_icon = TRUE;</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; <span class="keywordflow">if</span> (b)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; b = FALSE;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>));</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__icon_8c.html#a5b1bc5b1130b31ea9c9cb7164fb82f1d">remmina_icon_set_autostart</a>(b);</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; <span class="keywordflow">if</span> (rebuild_remmina_icon) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a>();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="remmina__icon_8c.html#af80ed314f91d653237249d839c7fc3b2">remmina_icon_populate_menu</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;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>));</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>));</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>));</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>));</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>));</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>));</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>));</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; g_free(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span> (gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>)))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = NULL;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> = g_strdup(gtk_font_chooser_get_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>)));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a> = gtk_switch_get_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &amp;color);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &amp;color);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &amp;color);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &amp;color);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &amp;color);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &amp;color);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &amp;color);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &amp;color);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &amp;color);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &amp;color);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &amp;color);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &amp;color);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &amp;color);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &amp;color);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &amp;color);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &amp;color);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &amp;color);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &amp;color);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &amp;color);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &amp;color);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &amp;color);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &amp;color);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &amp;color);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a> = gdk_rgba_to_string(&amp;color);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a> = atoi(gtk_entry_get_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>));</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>));</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>));</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>));</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a> = <a class="code" href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a>(gtk_button_get_label(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>));</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; <a class="code" href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a>();</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = NULL;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;}</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"><a class="line" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4"> 392</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a>(gchar *name, <a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *plugin, gpointer user_data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="struct___remmina_pref_plugin.html">RemminaPrefPlugin</a> *pref_plugin;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; GtkWidget *vbox;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; GtkWidget *widget;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; pref_plugin = (<a class="code" href="struct___remmina_pref_plugin.html">RemminaPrefPlugin</a> *)plugin;</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; widget = gtk_label_new(pref_plugin-&gt;<a class="code" href="struct___remmina_pref_plugin.html#a9ea805605a462db2ce7912ef05a4fd9d">pref_label</a>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; gtk_widget_set_halign(widget, GTK_ALIGN_END);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; gtk_widget_show(widget);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; gtk_widget_show(vbox);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; gtk_notebook_append_page(GTK_NOTEBOOK(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>), vbox, widget);</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; widget = pref_plugin-&gt;<a class="code" href="struct___remmina_pref_plugin.html#a377073db6f59790bfc3f69c62d4715e4">get_pref_body</a>(pref_plugin);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, FALSE, 0);</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; <span class="keywordflow">return</span> FALSE;</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"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc"> 415</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc">remmina_pref_dialog_vte_font_on_toggled</a>(GtkSwitch *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), !gtk_switch_get_active(widget));</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</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"><a class="line" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a"> 421</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a">remmina_pref_dialog_disable_tray_icon_on_toggled</a>(GtkWidget *widget, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; gboolean b;</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; b = !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), b);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment">/* Helper function for remmina_pref_dialog_init() */</span></div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59"> 432</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(GtkButton *button, guint keyval)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;{</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; gchar *val;</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; val = <a class="code" href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a>(keyval, 0);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; gtk_button_set_label(button, val);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; g_free(val);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;}</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;<span class="comment">/* Remmina preferences initialization */</span></div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344"> 442</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a>(<span class="keywordtype">void</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; gchar buf[100];</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; GdkRGBA color;</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="preprocessor">#if !defined (HAVE_LIBSSH) || !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; GtkWidget *align;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor">#endif</span></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;<span class="preprocessor">#if !defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;alignment_terminal&quot;</span>));</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor">#endif</span></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"> 457</span>&#160;<span class="preprocessor">#if !defined (HAVE_LIBSSH)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; align = GTK_WIDGET(GET_OBJECT(<span class="stringliteral">&quot;alignment_ssh&quot;</span>));</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; gtk_widget_set_sensitive(align, FALSE);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor">#endif</span></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; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">save_view_mode</a>);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">confirm_close</a>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">use_primary_password</a>);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), TRUE);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">lock_connect</a>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">lock_edit</a>);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>), TRUE);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), FALSE);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), FALSE);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">// TRANSLATORS: Do not translate libsodium, is the name of a library</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>), _(<span class="stringliteral">&quot;libsodium &gt;= 1.9.0 is required to use Primary Password&quot;</span>));</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>), FALSE);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>), FALSE);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>), FALSE);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">audit</a>);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>), TRUE);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</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#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a> != NULL)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <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="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;%G_%P_%N_%h.remmina&quot;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">trust_all</a>);</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; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">deny_screenshot_clipboard</a>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">fullscreen_on_auto</a>);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">always_show_tab</a>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>), <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="l00492"></a><span class="lineno"> 492</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">hide_connection_toolbar</a>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a>), <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="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>, buf);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>, buf);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>, buf);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>, buf);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>, buf);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">auto_scroll_step</a>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>, buf);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">recent_maximum</a>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>, buf);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBAPPINDICATOR</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">applet_new_ontop</a>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">applet_hide_count</a>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), <a class="code" href="remmina__icon_8c.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon_is_autostart</a>());</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), !<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a>);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">disable_tray_icon</a> = TRUE;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">dark_theme</a>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>), FALSE);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>), FALSE);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>), FALSE);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>), FALSE);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor">#endif</span></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; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">hostkey</a>);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">shortcutkey_fullscreen</a>);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">shortcutkey_autofit</a>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">shortcutkey_prevtab</a>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">shortcutkey_nexttab</a>);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">shortcutkey_scale</a>);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">shortcutkey_multimon</a>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">shortcutkey_grab</a>);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">shortcutkey_screenshot</a>);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">shortcutkey_viewonly</a>);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a887cbbd379d159cd0ac1acea7173d07b">shortcutkey_minimize</a>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a17bfba7a11836808719d33d5f6edbdc7">shortcutkey_disconnect</a>);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">shortcutkey_toolbar</a>);</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; <span class="keywordflow">if</span> (!(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> &amp;&amp; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>[0]))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>), TRUE);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</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#ac342b87e3992a20833d39e864e8ab85b">vte_font</a> &amp;&amp; <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>[0]) {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">vte_font</a>);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; gtk_font_chooser_set_font(GTK_FONT_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), <span class="stringliteral">&quot;Monospace 12&quot;</span>);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>), FALSE);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; gtk_switch_set_active(GTK_SWITCH(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">vte_allow_bold_text</a>);</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; <span class="comment">/* Foreground color option */</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa495bd5170c952a7dccff4e2504f5867">foreground</a>);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>), &amp;color);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">/* Background color option */</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">background</a>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>), &amp;color);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">/* Cursor color option */</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5ae99dc78a80baa14e0407983077c500">cursor</a>);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), &amp;color);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">cursor_foreground</a>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), &amp;color);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">/* Highlight color option */</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ad500e50c267d9b98ccf60737a8e5ce60">highlight</a>);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), &amp;color);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">highlight_foreground</a>);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), &amp;color);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">/* Bold color option */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">colorBD</a>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), &amp;color);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="comment">/* 16 colors */</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2a14fc38e73351f9009fe155dd859808">color0</a>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), &amp;color);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">color1</a>);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), &amp;color);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">color2</a>);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), &amp;color);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2b41853bdaaefa3968017819c19d316">color3</a>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), &amp;color);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">color4</a>);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), &amp;color);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">color5</a>);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), &amp;color);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">color6</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), &amp;color);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">color7</a>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), &amp;color);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">color8</a>);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), &amp;color);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">color9</a>);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), &amp;color);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">color10</a>);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), &amp;color);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">color11</a>);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), &amp;color);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">color12</a>);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), &amp;color);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">color13</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), &amp;color);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a4ad947d133d2aa2c94756aacb5031e79">color14</a>);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), &amp;color);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; gdk_rgba_parse(&amp;color, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">color_pref</a>.<a class="code" href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">color15</a>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), &amp;color);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor">#if !VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="comment">/* Disable color scheme buttons if old version of VTE */</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>), FALSE);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>), FALSE);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>), FALSE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>), FALSE);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>), FALSE);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>), FALSE);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>), FALSE);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>), FALSE);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>), FALSE);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>), FALSE);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>), FALSE);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>), FALSE);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>), FALSE);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>), FALSE);</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>), FALSE);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>), FALSE);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>), FALSE);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>), FALSE);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>), FALSE);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>), FALSE);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; gtk_widget_set_sensitive(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>), FALSE);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af9c8b60418a9dc795230e4ebb084f850">vte_lines</a>);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>, buf);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor">#if SODIUM_VERSION_INT &gt;= 90200</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; g_snprintf(buf, <span class="keyword">sizeof</span>(buf), <span class="stringliteral">&quot;%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">unlock_timeout</a>);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>, buf);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>, <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="l00638"></a><span class="lineno"> 638</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">default_mode</a>);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aecbe4c6a13ec6eda818c9f74c6f63468">tab_mode</a>);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>, <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="l00641"></a><span class="lineno"> 641</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">fullscreen_toolbar_visibility</a>);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">scale_quality</a>);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; gtk_combo_box_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</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#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a> != NULL &amp;&amp; strlen(<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>) &gt; 0)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">datadir_path</a>);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>, <a class="code" href="remmina__file__manager_8c.html#aa65bc30beb59d607ba430d966e7e27f5">remmina_file_get_datadir</a>());</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</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#aa1544a98f03088dc260ed98f2deac94f">remmina_file_name</a> != NULL)</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <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="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;%G_%P_%N_%h.remmina&quot;</span>);</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="keywordflow">if</span> (<a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a> != NULL)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3df98a686c4e2703455c1a786d3f1f5c">screenshot_path</a>);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; gtk_file_chooser_set_filename(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>, g_get_home_dir());</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</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#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a> != NULL)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">screenshot_name</a>);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>, <span class="stringliteral">&quot;remmina_%p_%h_%Y%m%d-%H%M%S&quot;</span>);</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; gtk_switch_set_active(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">grab_color_switch</a>);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</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#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a> != NULL)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">grab_color</a>);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; gtk_entry_set_text(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>, <span class="stringliteral">&quot;#00FF00&quot;</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>), <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>);</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; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">vte_shortcutkey_copy</a>);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">vte_shortcutkey_paste</a>);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">vte_shortcutkey_select_all</a>);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">vte_shortcutkey_increase_font</a>);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">vte_shortcutkey_decrease_font</a>);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a>(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">vte_shortcutkey_search_text</a>);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</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#aaf53c620d115a4642130227cff4a624aa682ab42b3f4af3dd93452efdb76b8757">REMMINA_PLUGIN_TYPE_PREF</a>, <a class="code" href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a>, remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</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; g_signal_connect(G_OBJECT(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__pref__dialog_8c.html#ab9776574663e2c3fcb793ec70887336d">remmina_pref_on_dialog_destroy</a>), NULL);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; g_object_set_data(G_OBJECT(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;tag&quot;</span>, <span class="stringliteral">&quot;remmina-pref-dialog&quot;</span>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <a class="code" href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a>(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>));</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="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00686"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458"> 686</a></span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a>(gint default_tab, GtkWindow *parent)</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; GSimpleActionGroup *actions;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; GtkAccelGroup *accel_group = NULL;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; remmina_pref_dialog = g_new0(<a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a>, 1);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">priv</a> = g_new0(<a class="code" href="struct___remmina_pref_dialog_priv.html">RemminaPrefDialogPriv</a>, 1);</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">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_preferences.glade&quot;</span>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a> = GTK_WIDGET(gtk_builder_get_object(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, <span class="stringliteral">&quot;RemminaPrefDialog&quot;</span>));</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">if</span> (parent)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; gtk_window_set_transient_for(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), parent);</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a> = GTK_NOTEBOOK(GET_OBJECT(<span class="stringliteral">&quot;notebook_preferences&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;filechooserbutton_options_datadir_path&quot;</span>));</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_file_name&quot;</span>));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;filechooserbutton_options_screenshots_path&quot;</span>));</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_screenshot_name&quot;</span>));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_deny_screenshot_clipboard&quot;</span>));</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_remember_last_view_mode&quot;</span>));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_options_confirm_close&quot;</span>));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_use_primary_password&quot;</span>));</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;unlock_timeout&quot;</span>));</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_lock_connect&quot;</span>));</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_lock_edit&quot;</span>));</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_security_enc_method&quot;</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_audit&quot;</span>));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_security_trust_all&quot;</span>));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_options_save_settings&quot;</span>));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_fullscreen_on_auto&quot;</span>));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_show_tabs&quot;</span>));</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_show_notes&quot;</span>));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_hide_toolbar&quot;</span>));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_appearance_hide_searchbar&quot;</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_double_click&quot;</span>));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_view_mode&quot;</span>));</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_tab_interface&quot;</span>));</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_appearance_fullscreen_toolbar_visibility&quot;</span>));</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_scale_quality&quot;</span>));</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_options_ssh_parseconfig&quot;</span>));</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a> = GTK_COMBO_BOX(GET_OBJECT(<span class="stringliteral">&quot;comboboxtext_options_ssh_loglevel&quot;</span>));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_port&quot;</span>));</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepidle&quot;</span>));</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepintvl&quot;</span>));</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_keepcnt&quot;</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_ssh_tcp_usrtimeout&quot;</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_scroll&quot;</span>));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_options_recent_items&quot;</span>));</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_grab_color&quot;</span>));</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_appearance_grab_color&quot;</span>));</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_options_recent_items_clear&quot;</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_new_connection_on_top&quot;</span>));</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_hide_totals&quot;</span>));</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_disable_tray&quot;</span>));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_dark_theme&quot;</span>));</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a> = GTK_CHECK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;checkbutton_applet_start_in_tray&quot;</span>));</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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_host_key&quot;</span>));</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_fullscreen&quot;</span>));</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_auto_fit&quot;</span>));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_switch_tab_left&quot;</span>));</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_switch_tabright&quot;</span>));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_scaled&quot;</span>));</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_grab_keyboard&quot;</span>));</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_multimon&quot;</span>));</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_screenshot&quot;</span>));</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_viewonly&quot;</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_minimize&quot;</span>));</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_disconnect&quot;</span>));</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_toolbar&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; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_terminal_font_system&quot;</span>));</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a> = GTK_FONT_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;fontbutton_terminal_font&quot;</span>));</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a> = GTK_SWITCH(GET_OBJECT(<span class="stringliteral">&quot;switch_terminal_bold&quot;</span>));</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a> = GTK_ENTRY(GET_OBJECT(<span class="stringliteral">&quot;entry_scrollback_lines&quot;</span>));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_copy&quot;</span>));</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_paste&quot;</span>));</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_select_all&quot;</span>));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_increase_font&quot;</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_decrease_font&quot;</span>));</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a> = GTK_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;button_keyboard_search_text&quot;</span>));</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_foreground&quot;</span>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_foreground&quot;</span>));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_background&quot;</span>));</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_background&quot;</span>));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_cursor_color&quot;</span>));</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_cursor&quot;</span>));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_cursor_foreground&quot;</span>));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_highlight&quot;</span>));</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_highlight_foreground&quot;</span>));</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_bold_color&quot;</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_colorBD&quot;</span>));</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_normal_colors&quot;</span>));</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color0&quot;</span>));</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color1&quot;</span>));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color2&quot;</span>));</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color3&quot;</span>));</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color4&quot;</span>));</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color5&quot;</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color6&quot;</span>));</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color7&quot;</span>));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a> = GTK_LABEL(GET_OBJECT(<span class="stringliteral">&quot;label_terminal_bright_colors&quot;</span>));</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color8&quot;</span>));</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color9&quot;</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color10&quot;</span>));</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color11&quot;</span>));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color12&quot;</span>));</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color13&quot;</span>));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color14&quot;</span>));</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a> = GTK_COLOR_BUTTON(GET_OBJECT(<span class="stringliteral">&quot;colorbutton_color15&quot;</span>));</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="preprocessor">#if defined (HAVE_LIBSSH) &amp;&amp; defined (HAVE_LIBVTE)</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor">#if VTE_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> gchar *remmina_dir;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; gchar *destpath;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; remmina_dir = g_build_path(<span class="stringliteral">&quot;/&quot;</span>, g_get_user_config_dir(), <span class="stringliteral">&quot;remmina&quot;</span>, NULL);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; destpath = g_strdup_printf(<span class="stringliteral">&quot;%s/remmina.colors&quot;</span>, remmina_dir);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a> = GTK_FILE_CHOOSER(GET_OBJECT(<span class="stringliteral">&quot;button_term_cs&quot;</span>));</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keyword">const</span> gchar *fc_tooltip_text = g_strconcat(_(<span class="stringliteral">&quot;Picking a terminal colouring file replaces the file: &quot;</span>),</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="stringliteral">&quot;\n&quot;</span>,</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; destpath,</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="stringliteral">&quot;\n&quot;</span>,</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; _(<span class="stringliteral">&quot;This file contains the “Custom” terminal colour scheme selectable from the “Advanced” tab of terminal connections and editable in the “Terminal” tab in the settings.&quot;</span>),</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; NULL);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; gtk_widget_set_tooltip_text(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>), fc_tooltip_text);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>), REMMINA_RUNTIME_TERM_CS_DIR);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; g_free(destpath);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="comment">/* Non widget objects */</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; actions = g_simple_action_group_new();</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>), remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; gtk_widget_insert_action_group(GTK_WIDGET(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), <span class="stringliteral">&quot;pref&quot;</span>, G_ACTION_GROUP(actions));</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; g_action_map_add_action_entries(G_ACTION_MAP(actions), <a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>, G_N_ELEMENTS(<a class="code" href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a>), remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; g_object_unref(actions);</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">/* Accelerators */</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; accel_group = gtk_accel_group_new();</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; gtk_window_add_accel_group(GTK_WINDOW(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>), accel_group);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; gtk_accel_group_connect(accel_group, GDK_KEY_Q, GDK_CONTROL_MASK, 0,</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; g_cclosure_new_swap(G_CALLBACK(<a class="code" href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>), NULL, NULL));</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="comment">/* Connect signals */</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; gtk_builder_connect_signals(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>, NULL);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="comment">/* Initialize the window and load the preferences */</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a>();</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; <span class="keywordflow">if</span> (default_tab &gt; 0)</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; gtk_notebook_set_current_page(remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>, default_tab);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">return</span> remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</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;</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29"> 840</a></span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a>()</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; <span class="keywordflow">if</span> (!remmina_pref_dialog)</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">return</span> remmina_pref_dialog-&gt;<a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;}</div><div class="ttc" id="struct___remmina_pref_html_a10b1f3d9b49687c09ec5dd98a0577d7f"><div class="ttname"><a href="struct___remmina_pref.html#a10b1f3d9b49687c09ec5dd98a0577d7f">_RemminaPref::shortcutkey_fullscreen</a></div><div class="ttdeci">guint shortcutkey_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00174">remmina_pref.h:174</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="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="struct___remmina_pref_html_a3e3d20bf883608e3ff133901d2f4e8d5"><div class="ttname"><a href="struct___remmina_pref.html#a3e3d20bf883608e3ff133901d2f4e8d5">_RemminaPref::vte_shortcutkey_search_text</a></div><div class="ttdeci">guint vte_shortcutkey_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00207">remmina_pref.h:207</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_afccd66623eb7bb1ec233a241e97e80f0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">_RemminaPrefDialog::button_keyboard_select_all</a></div><div class="ttdeci">GtkButton * button_keyboard_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00122">remmina_pref_dialog.h:122</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_add9c48bccc2c61be2f2900a154648dd4"><div class="ttname"><a href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a></div><div class="ttdeci">static gboolean remmina_pref_dialog_add_pref_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00395">remmina_pref_dialog.c:395</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_afccd66623eb7bb1ec233a241e97e80f0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">_RemminaPrefDialog::button_keyboard_select_all</a></div><div class="ttdeci">GtkButton * button_keyboard_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00121">remmina_pref_dialog.h:121</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_add9c48bccc2c61be2f2900a154648dd4"><div class="ttname"><a href="remmina__pref__dialog_8c.html#add9c48bccc2c61be2f2900a154648dd4">remmina_pref_dialog_add_pref_plugin</a></div><div class="ttdeci">static gboolean remmina_pref_dialog_add_pref_plugin(gchar *name, RemminaPlugin *plugin, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00392">remmina_pref_dialog.c:392</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="struct___remmina_pref_dialog_html_a95129b25f045ca6f0bc90323b755aebb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">_RemminaPrefDialog::colorbutton_color2</a></div><div class="ttdeci">GtkColorButton * colorbutton_color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00137">remmina_pref_dialog.h:137</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a95129b25f045ca6f0bc90323b755aebb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">_RemminaPrefDialog::colorbutton_color2</a></div><div class="ttdeci">GtkColorButton * colorbutton_color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00136">remmina_pref_dialog.h:136</a></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="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__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="struct___remmina_pref_dialog_html_a4b8e7072d5c4b5c8b5e57714130f973d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">_RemminaPrefDialog::colorbutton_color14</a></div><div class="ttdeci">GtkColorButton * colorbutton_color14</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00149">remmina_pref_dialog.h:149</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4b8e7072d5c4b5c8b5e57714130f973d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">_RemminaPrefDialog::colorbutton_color14</a></div><div class="ttdeci">GtkColorButton * colorbutton_color14</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00148">remmina_pref_dialog.h:148</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a766ea73df1b7d25866582ec209941de8"><div class="ttname"><a href="struct___remmina_pref.html#a766ea73df1b7d25866582ec209941de8">_RemminaPref::lock_connect</a></div><div class="ttdeci">gboolean lock_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00192">remmina_pref.h:192</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af23110d5e4595589c47800b5d2d5957c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">_RemminaPrefDialog::colorbutton_highlight_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00133">remmina_pref_dialog.h:133</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a8f34c1336ad9efc4679c6e449bec7a97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">_RemminaPrefDialog::button_keyboard_grab_keyboard</a></div><div class="ttdeci">GtkButton * button_keyboard_grab_keyboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00105">remmina_pref_dialog.h:105</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af23110d5e4595589c47800b5d2d5957c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">_RemminaPrefDialog::colorbutton_highlight_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00132">remmina_pref_dialog.h:132</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a8f34c1336ad9efc4679c6e449bec7a97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">_RemminaPrefDialog::button_keyboard_grab_keyboard</a></div><div class="ttdeci">GtkButton * button_keyboard_grab_keyboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00104">remmina_pref_dialog.h:104</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a5f5bc6d5bc53adaf815444145242a7df"><div class="ttname"><a href="struct___remmina_pref.html#a5f5bc6d5bc53adaf815444145242a7df">_RemminaPref::grab_color</a></div><div class="ttdeci">const gchar * grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00158">remmina_pref.h:158</a></div></div>
<div class="ttc" id="remmina__key__chooser_8c_html_a9e8586623c819a2e24b6d7b1d3efde94"><div class="ttname"><a href="remmina__key__chooser_8c.html#a9e8586623c819a2e24b6d7b1d3efde94">remmina_key_chooser_new</a></div><div class="ttdeci">RemminaKeyChooserArguments * remmina_key_chooser_new(GtkWindow *parent_window, gboolean use_modifiers)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8c_source.html#l00056">remmina_key_chooser.c:56</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a90e0cfac442b9e50e0f4857b3ff74255"><div class="ttname"><a href="struct___remmina_pref.html#a90e0cfac442b9e50e0f4857b3ff74255">_RemminaPref::vte_shortcutkey_increase_font</a></div><div class="ttdeci">guint vte_shortcutkey_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00205">remmina_pref.h:205</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a384dde55873f855555c0194d45cbfd59"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a></div><div class="ttdeci">static void remmina_pref_dialog_set_button_label(GtkButton *button, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00435">remmina_pref_dialog.c:435</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a384dde55873f855555c0194d45cbfd59"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a384dde55873f855555c0194d45cbfd59">remmina_pref_dialog_set_button_label</a></div><div class="ttdeci">static void remmina_pref_dialog_set_button_label(GtkButton *button, guint keyval)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00432">remmina_pref_dialog.c:432</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a054a55a2c39181609150cbb4d22413ef"><div class="ttname"><a href="struct___remmina_pref.html#a054a55a2c39181609150cbb4d22413ef">_RemminaPref::default_action</a></div><div class="ttdeci">gint default_action</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00140">remmina_pref.h:140</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7af362b8421b6f066d4d9d737a01ebfb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">_RemminaPrefDialog::comboboxtext_appearance_fullscreen_toolbar_visibility</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00078">remmina_pref_dialog.h:78</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7af362b8421b6f066d4d9d737a01ebfb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">_RemminaPrefDialog::comboboxtext_appearance_fullscreen_toolbar_visibility</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00077">remmina_pref_dialog.h:77</a></div></div>
<div class="ttc" id="remmina__string__list_8c_html_a500b85eafd23280f998d2980d1eba80e"><div class="ttname"><a href="remmina__string__list_8c.html#a500b85eafd23280f998d2980d1eba80e">remmina_string_list_set_validation_func</a></div><div class="ttdeci">void remmina_string_list_set_validation_func(RemminaStringListValidationFunc func)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__list_8c_source.html#l00247">remmina_string_list.c:247</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af0b14d180d9dcabf9e79b98094bbae74"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">_RemminaPrefDialog::button_keyboard_paste</a></div><div class="ttdeci">GtkButton * button_keyboard_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00121">remmina_pref_dialog.h:121</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af0b14d180d9dcabf9e79b98094bbae74"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">_RemminaPrefDialog::button_keyboard_paste</a></div><div class="ttdeci">GtkButton * button_keyboard_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00120">remmina_pref_dialog.h:120</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6ae707cecd1f6660d8e2168d7422b797"><div class="ttname"><a href="struct___remmina_pref.html#a6ae707cecd1f6660d8e2168d7422b797">_RemminaPref::hostkey</a></div><div class="ttdeci">guint hostkey</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00173">remmina_pref.h:173</a></div></div>
<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="struct___remmina_pref_dialog_html_a159eb84f43ce9ed81b92b6e260839af6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">_RemminaPrefDialog::button_options_recent_items_clear</a></div><div class="ttdeci">GtkButton * button_options_recent_items_clear</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00089">remmina_pref_dialog.h:89</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a159eb84f43ce9ed81b92b6e260839af6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">_RemminaPrefDialog::button_options_recent_items_clear</a></div><div class="ttdeci">GtkButton * button_options_recent_items_clear</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00088">remmina_pref_dialog.h:88</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a6e763bfa2b2c507744f4773cd81f3571"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">_RemminaPrefDialog::entry_options_screenshot_name</a></div><div class="ttdeci">GtkEntry * entry_options_screenshot_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00055">remmina_pref_dialog.h:55</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a1b5f4704fb50b67ff1e3daaf7d7d3209"><div class="ttname"><a href="struct___remmina_pref.html#a1b5f4704fb50b67ff1e3daaf7d7d3209">_RemminaPref::shortcutkey_screenshot</a></div><div class="ttdeci">guint shortcutkey_screenshot</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00183">remmina_pref.h:183</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a45d70bbebf5163081d67df3dbb73cc1b"><div class="ttname"><a href="struct___remmina_pref.html#a45d70bbebf5163081d67df3dbb73cc1b">_RemminaPref::shortcutkey_prevtab</a></div><div class="ttdeci">guint shortcutkey_prevtab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00176">remmina_pref.h:176</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a70f73ed240c2ce813dd9fa66fd1a6677"><div class="ttname"><a href="struct___remmina_pref.html#a70f73ed240c2ce813dd9fa66fd1a6677">_RemminaPref::use_primary_password</a></div><div class="ttdeci">gboolean use_primary_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00188">remmina_pref.h:188</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a9d7979bea3b5b1e6d4c0f30be3424ac3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">_RemminaPrefDialog::switch_security_audit</a></div><div class="ttdeci">GtkSwitch * switch_security_audit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00064">remmina_pref_dialog.h:64</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a1d7deb091e0d51a8d7885ad9e22dc9a7"><div class="ttname"><a href="struct___remmina_pref.html#a1d7deb091e0d51a8d7885ad9e22dc9a7">_RemminaPref::ssh_parseconfig</a></div><div class="ttdeci">gboolean ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00166">remmina_pref.h:166</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a9a050b69e373c90ea7d400aa94f34344"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a></div><div class="ttdeci">static void remmina_pref_dialog_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00445">remmina_pref_dialog.c:445</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a9a050b69e373c90ea7d400aa94f34344"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9a050b69e373c90ea7d400aa94f34344">remmina_pref_dialog_init</a></div><div class="ttdeci">static void remmina_pref_dialog_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00442">remmina_pref_dialog.c:442</a></div></div>
<div class="ttc" id="remmina__plugin__manager_8c_html_a13f13a6a4280268656f258cb5aeff031"><div class="ttname"><a href="remmina__plugin__manager_8c.html#a13f13a6a4280268656f258cb5aeff031">remmina_plugin_manager_for_each_plugin</a></div><div class="ttdeci">void remmina_plugin_manager_for_each_plugin(RemminaPluginType type, RemminaPluginFunc func, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__plugin__manager_8c_source.html#l00467">remmina_plugin_manager.c:467</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a5d87faf3df58b2fc1e09a33fd07c4d0c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">_RemminaPrefDialog::entry_options_file_name</a></div><div class="ttdeci">GtkEntry * entry_options_file_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00053">remmina_pref_dialog.h:53</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ad87514b86ed3f9b5980bf6c565343b87"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">_RemminaPrefDialog::checkbutton_appearance_fullscreen_on_auto</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_fullscreen_on_auto</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00067">remmina_pref_dialog.h:67</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a341e052b4a78587530b63975b7edc92d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">_RemminaPrefDialog::label_terminal_foreground</a></div><div class="ttdeci">GtkLabel * label_terminal_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00115">remmina_pref_dialog.h:115</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a341e052b4a78587530b63975b7edc92d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">_RemminaPrefDialog::label_terminal_foreground</a></div><div class="ttdeci">GtkLabel * label_terminal_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00114">remmina_pref_dialog.h:114</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="struct___remmina_pref_dialog_html_a91063a718e43d8aa78935f5c3c7eabaa"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">_RemminaPrefDialog::switch_options_confirm_close</a></div><div class="ttdeci">GtkSwitch * switch_options_confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00059">remmina_pref_dialog.h:59</a></div></div>
<div class="ttc" id="remmina__widget__pool_8c_html_ae3c9c9853eb5bedbfeadbfac1d495b95"><div class="ttname"><a href="remmina__widget__pool_8c.html#ae3c9c9853eb5bedbfeadbfac1d495b95">remmina_widget_pool_register</a></div><div class="ttdeci">void remmina_widget_pool_register(GtkWidget *widget)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__widget__pool_8c_source.html#l00056">remmina_widget_pool.c:56</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a793ae9c3e2f88eed85551c85d6832ebd"><div class="ttname"><a href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">_RemminaPref::ssh_tcp_keepintvl</a></div><div class="ttdeci">gint ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00169">remmina_pref.h:169</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a33d785a31072bb4ce865ae048cc14fc2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">_RemminaPrefDialog::button_keyboard_fullscreen</a></div><div class="ttdeci">GtkButton * button_keyboard_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00099">remmina_pref_dialog.h:99</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a33d785a31072bb4ce865ae048cc14fc2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">_RemminaPrefDialog::button_keyboard_fullscreen</a></div><div class="ttdeci">GtkButton * button_keyboard_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00098">remmina_pref_dialog.h:98</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a26ad416987608d6c6f0a98ba9d611119"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">_RemminaPrefDialog::checkbutton_options_save_settings</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_save_settings</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00066">remmina_pref_dialog.h:66</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>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa8077d5e8254495ddee87c6baafb07a5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">_RemminaPrefDialog::button_keyboard_toolbar</a></div><div class="ttdeci">GtkButton * button_keyboard_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00110">remmina_pref_dialog.h:110</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa8077d5e8254495ddee87c6baafb07a5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">_RemminaPrefDialog::button_keyboard_toolbar</a></div><div class="ttdeci">GtkButton * button_keyboard_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00109">remmina_pref_dialog.h:109</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ae26f55ce50c1485cda60106c5f24256c"><div class="ttname"><a href="struct___remmina_color_pref.html#ae26f55ce50c1485cda60106c5f24256c">_RemminaColorPref::color10</a></div><div class="ttdeci">gchar * color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00124">remmina_pref.h:124</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_color_pref_html_a3f12bdb761d7c3ee02c0871aa423bcd1"><div class="ttname"><a href="struct___remmina_color_pref.html#a3f12bdb761d7c3ee02c0871aa423bcd1">_RemminaColorPref::colorBD</a></div><div class="ttdeci">gchar * colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00112">remmina_pref.h:112</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae6eb4e606ae2e199435754728d723ce1"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">_RemminaPrefDialog::button_keyboard_disconnect</a></div><div class="ttdeci">GtkButton * button_keyboard_disconnect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00109">remmina_pref_dialog.h:109</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae6eb4e606ae2e199435754728d723ce1"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">_RemminaPrefDialog::button_keyboard_disconnect</a></div><div class="ttdeci">GtkButton * button_keyboard_disconnect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00108">remmina_pref_dialog.h:108</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a65a1f2b90d033425fd0c041fccae320c"><div class="ttname"><a href="struct___remmina_pref.html#a65a1f2b90d033425fd0c041fccae320c">_RemminaPref::auto_scroll_step</a></div><div class="ttdeci">gint auto_scroll_step</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00142">remmina_pref.h:142</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a2d0556c47e16187ea61e70516a6346bc"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc">remmina_pref_dialog_vte_font_on_toggled</a></div><div class="ttdeci">void remmina_pref_dialog_vte_font_on_toggled(GtkSwitch *widget, RemminaPrefDialog *dialog)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00418">remmina_pref_dialog.c:418</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a85b8819ff553f86a5ad8f7fd1a7aa531"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">_RemminaPrefDialog::entry_options_recent_items</a></div><div class="ttdeci">GtkEntry * entry_options_recent_items</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00087">remmina_pref_dialog.h:87</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a2d0556c47e16187ea61e70516a6346bc"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a2d0556c47e16187ea61e70516a6346bc">remmina_pref_dialog_vte_font_on_toggled</a></div><div class="ttdeci">void remmina_pref_dialog_vte_font_on_toggled(GtkSwitch *widget, RemminaPrefDialog *dialog)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00415">remmina_pref_dialog.c:415</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a85b8819ff553f86a5ad8f7fd1a7aa531"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">_RemminaPrefDialog::entry_options_recent_items</a></div><div class="ttdeci">GtkEntry * entry_options_recent_items</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00086">remmina_pref_dialog.h:86</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a579fae9094500d743c26d03f4c34d457"><div class="ttname"><a href="struct___remmina_pref.html#a579fae9094500d743c26d03f4c34d457">_RemminaPref::vte_shortcutkey_copy</a></div><div class="ttdeci">guint vte_shortcutkey_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00202">remmina_pref.h:202</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9e7984859dc88bab77503b175fc4d8c7"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">_RemminaPrefDialog::entry_options_ssh_tcp_usrtimeout</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00085">remmina_pref_dialog.h:85</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a18bfbeb5d049a9f37f7624199b2b864a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a">remmina_pref_dialog_disable_tray_icon_on_toggled</a></div><div class="ttdeci">void remmina_pref_dialog_disable_tray_icon_on_toggled(GtkWidget *widget, RemminaPrefDialog *dialog)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00424">remmina_pref_dialog.c:424</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9e7984859dc88bab77503b175fc4d8c7"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">_RemminaPrefDialog::entry_options_ssh_tcp_usrtimeout</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00084">remmina_pref_dialog.h:84</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a18bfbeb5d049a9f37f7624199b2b864a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a18bfbeb5d049a9f37f7624199b2b864a">remmina_pref_dialog_disable_tray_icon_on_toggled</a></div><div class="ttdeci">void remmina_pref_dialog_disable_tray_icon_on_toggled(GtkWidget *widget, RemminaPrefDialog *dialog)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00421">remmina_pref_dialog.c:421</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ab0928bd64388cb1ced2f542d3b35019d"><div class="ttname"><a href="struct___remmina_pref.html#ab0928bd64388cb1ced2f542d3b35019d">_RemminaPref::default_mode</a></div><div class="ttdeci">gint default_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00155">remmina_pref.h:155</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__public_8c_html_a098786d3aa6991aeba43a61e29d534d0"><div class="ttname"><a href="remmina__public_8c.html#a098786d3aa6991aeba43a61e29d534d0">remmina_public_resolution_validation_func</a></div><div class="ttdeci">gboolean remmina_public_resolution_validation_func(const gchar *new_str, gchar **error)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00598">remmina_public.c:598</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html"><div class="ttname"><a href="remmina__pref__dialog_8h.html">remmina_pref_dialog.h</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a3a897d3fdc112fd9f96d2363f4094fc4"><div class="ttname"><a href="struct___remmina_color_pref.html#a3a897d3fdc112fd9f96d2363f4094fc4">_RemminaColorPref::color2</a></div><div class="ttdeci">gchar * color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00116">remmina_pref.h:116</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6a01f6f8247a97a94b8855902a14a980"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">_RemminaPrefDialog::switch_terminal_bold</a></div><div class="ttdeci">GtkSwitch * switch_terminal_bold</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00114">remmina_pref_dialog.h:114</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6a01f6f8247a97a94b8855902a14a980"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">_RemminaPrefDialog::switch_terminal_bold</a></div><div class="ttdeci">GtkSwitch * switch_terminal_bold</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00113">remmina_pref_dialog.h:113</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae5c3a7fd35cc51f658dda67052440b47"><div class="ttname"><a href="struct___remmina_pref.html#ae5c3a7fd35cc51f658dda67052440b47">_RemminaPref::shortcutkey_autofit</a></div><div class="ttdeci">guint shortcutkey_autofit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00175">remmina_pref.h:175</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac63a1e0fdf5f16c8b51fcb640075ed7a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">_RemminaPrefDialog::checkbutton_dark_theme</a></div><div class="ttdeci">GtkCheckButton * checkbutton_dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00095">remmina_pref_dialog.h:95</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9088c8f060e1fe7e12445fb2f9b99bc3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">_RemminaPrefDialog::colorbutton_color6</a></div><div class="ttdeci">GtkColorButton * colorbutton_color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00141">remmina_pref_dialog.h:141</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac63a1e0fdf5f16c8b51fcb640075ed7a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">_RemminaPrefDialog::checkbutton_dark_theme</a></div><div class="ttdeci">GtkCheckButton * checkbutton_dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00094">remmina_pref_dialog.h:94</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9088c8f060e1fe7e12445fb2f9b99bc3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">_RemminaPrefDialog::colorbutton_color6</a></div><div class="ttdeci">GtkColorButton * colorbutton_color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00140">remmina_pref_dialog.h:140</a></div></div>
<div class="ttc" id="remmina__key__chooser_8h_html"><div class="ttname"><a href="remmina__key__chooser_8h.html">remmina_key_chooser.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="struct___remmina_pref_dialog_html_a62227d6671d78e7387e727c92d79c92e"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">_RemminaPrefDialog::label_terminal_normal_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_normal_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00128">remmina_pref_dialog.h:128</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a62227d6671d78e7387e727c92d79c92e"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">_RemminaPrefDialog::label_terminal_normal_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_normal_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00127">remmina_pref_dialog.h:127</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a45f85b81d18d274a220f65e5c8e508eb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">_RemminaPrefDialog::switch_security_use_primary_password</a></div><div class="ttdeci">GtkSwitch * switch_security_use_primary_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00060">remmina_pref_dialog.h:60</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a7ab49071b369069912565f3e0a8b000b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">_RemminaPrefDialog::switch_options_remember_last_view_mode</a></div><div class="ttdeci">GtkSwitch * switch_options_remember_last_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00058">remmina_pref_dialog.h:58</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af3997f4513793f2b6ba71a54c55c78bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">_RemminaPrefDialog::fontbutton_terminal_font</a></div><div class="ttdeci">GtkFontButton * fontbutton_terminal_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00113">remmina_pref_dialog.h:113</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af3997f4513793f2b6ba71a54c55c78bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">_RemminaPrefDialog::fontbutton_terminal_font</a></div><div class="ttdeci">GtkFontButton * fontbutton_terminal_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00112">remmina_pref_dialog.h:112</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ab2ca13ee672a2536665f66d544753928"><div class="ttname"><a href="struct___remmina_color_pref.html#ab2ca13ee672a2536665f66d544753928">_RemminaColorPref::color12</a></div><div class="ttdeci">gchar * color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00126">remmina_pref.h:126</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2ce8a15918b4f58702d1063afbbc5a4a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">_RemminaPrefDialog::colorbutton_color3</a></div><div class="ttdeci">GtkColorButton * colorbutton_color3</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00138">remmina_pref_dialog.h:138</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2ce8a15918b4f58702d1063afbbc5a4a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">_RemminaPrefDialog::colorbutton_color3</a></div><div class="ttdeci">GtkColorButton * colorbutton_color3</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00137">remmina_pref_dialog.h:137</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ae560922bd1e57c944f87e444e1159ccf"><div class="ttname"><a href="struct___remmina_color_pref.html#ae560922bd1e57c944f87e444e1159ccf">_RemminaColorPref::highlight_foreground</a></div><div class="ttdeci">gchar * highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00111">remmina_pref.h:111</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa63edd53778f0eba2e610690fb8002a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">_RemminaPrefDialog::colorbutton_color15</a></div><div class="ttdeci">GtkColorButton * colorbutton_color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00150">remmina_pref_dialog.h:150</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa63edd53778f0eba2e610690fb8002a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">_RemminaPrefDialog::colorbutton_color15</a></div><div class="ttdeci">GtkColorButton * colorbutton_color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00149">remmina_pref_dialog.h:149</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a095f19f07c5ebeb47a89b1bfe23cc21e"><div class="ttname"><a href="struct___remmina_pref.html#a095f19f07c5ebeb47a89b1bfe23cc21e">_RemminaPref::scale_quality</a></div><div class="ttdeci">gint scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00141">remmina_pref.h:141</a></div></div>
<div class="ttc" id="remmina__passwd_8c_html_a03a4dd5860c39db272a9fa913a95caea"><div class="ttname"><a href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a></div><div class="ttdeci">gboolean remmina_passwd(GtkWindow *parent, gchar **unlock_password)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__passwd_8c_source.html#l00110">remmina_passwd.c:110</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01141">remmina_pref.c:1141</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae63c0c0ec8dbfe8bf665221868661b35"><div class="ttname"><a href="struct___remmina_pref.html#ae63c0c0ec8dbfe8bf665221868661b35">_RemminaPref::deny_screenshot_clipboard</a></div><div class="ttdeci">gboolean deny_screenshot_clipboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00137">remmina_pref.h:137</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a59eebf1d365ef192de8e14da2c381f37"><div class="ttname"><a href="struct___remmina_pref.html#a59eebf1d365ef192de8e14da2c381f37">_RemminaPref::resolutions</a></div><div class="ttdeci">gchar * resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00144">remmina_pref.h:144</a></div></div>
-<div class="ttc" id="struct___remmina_pref_html_ad11e485a8fdb8af1fded85f68f4ba7c4"><div class="ttname"><a href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">_RemminaPref::periodic_news_permitted</a></div><div class="ttdeci">gboolean periodic_news_permitted</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00239">remmina_pref.h:239</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a9c5171c5d8a61cc48171065644613cad"><div class="ttname"><a href="struct___remmina_pref.html#a9c5171c5d8a61cc48171065644613cad">_RemminaPref::vte_shortcutkey_select_all</a></div><div class="ttdeci">guint vte_shortcutkey_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00204">remmina_pref.h:204</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a41f551c6f21f4a448e4c5ec1186240fd"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">_RemminaPrefDialog::checkbutton_appearance_hide_searchbar</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_hide_searchbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00071">remmina_pref_dialog.h:71</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a4c6b01300d82ee50a036fc9fb758cb1f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">_RemminaPrefDialog::checkbutton_appearance_hide_toolbar</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_hide_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00070">remmina_pref_dialog.h:70</a></div></div>
@@ -176,20 +175,20 @@ $(document).ready(function(){initNavTree('remmina__pref__dialog_8c_source.html',
<div class="ttc" id="struct___remmina_pref_dialog_html_a285a521c1fb119f9c703d434d9619018"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">_RemminaPrefDialog::switch_security_lock_edit</a></div><div class="ttdeci">GtkSwitch * switch_security_lock_edit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00063">remmina_pref_dialog.h:63</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a675a8004488715429fa540dffb330d49"><div class="ttname"><a href="struct___remmina_color_pref.html#a675a8004488715429fa540dffb330d49">_RemminaColorPref::background</a></div><div class="ttdeci">gchar * background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00107">remmina_pref.h:107</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a50dcebddc0891688ae179ba940d21fd1"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a50dcebddc0891688ae179ba940d21fd1">remmina_pref_on_color_scheme_selected</a></div><div class="ttdeci">void remmina_pref_on_color_scheme_selected(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00102">remmina_pref_dialog.c:102</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1b100c8bbb0b01229b240a035defd45f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">_RemminaPrefDialog::button_keyboard_copy</a></div><div class="ttdeci">GtkButton * button_keyboard_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00120">remmina_pref_dialog.h:120</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2a76560d15a613524e38d22934843196"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">_RemminaPrefDialog::entry_options_ssh_tcp_keepintvl</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00083">remmina_pref_dialog.h:83</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9adb1c6520579cedf59495250a9a6e59"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">_RemminaPrefDialog::colorbutton_cursor_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00131">remmina_pref_dialog.h:131</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a745d3114e3cef2c572b859530926ad40"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">_RemminaPrefDialog::entry_options_ssh_port</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00081">remmina_pref_dialog.h:81</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1b100c8bbb0b01229b240a035defd45f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">_RemminaPrefDialog::button_keyboard_copy</a></div><div class="ttdeci">GtkButton * button_keyboard_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00119">remmina_pref_dialog.h:119</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2a76560d15a613524e38d22934843196"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">_RemminaPrefDialog::entry_options_ssh_tcp_keepintvl</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00082">remmina_pref_dialog.h:82</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9adb1c6520579cedf59495250a9a6e59"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">_RemminaPrefDialog::colorbutton_cursor_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00130">remmina_pref_dialog.h:130</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a745d3114e3cef2c572b859530926ad40"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">_RemminaPrefDialog::entry_options_ssh_port</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00080">remmina_pref_dialog.h:80</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a52f5fa8b2b4500c3ab9ae35f0d410f17"><div class="ttname"><a href="struct___remmina_pref.html#a52f5fa8b2b4500c3ab9ae35f0d410f17">_RemminaPref::vte_allow_bold_text</a></div><div class="ttdeci">gboolean vte_allow_bold_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00199">remmina_pref.h:199</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ae766dd561f1bf23723306f7a70015f27"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">_RemminaPrefDialog::filechooserbutton_options_screenshots_path</a></div><div class="ttdeci">GtkFileChooser * filechooserbutton_options_screenshots_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00054">remmina_pref_dialog.h:54</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6cea3c4860e9889953a6a22c72672d32"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">_RemminaPrefDialog::entry_options_ssh_tcp_keepidle</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00082">remmina_pref_dialog.h:82</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6cea3c4860e9889953a6a22c72672d32"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">_RemminaPrefDialog::entry_options_ssh_tcp_keepidle</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00081">remmina_pref_dialog.h:81</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_afcd157a6f3bddb4b23b4e328cd18358c"><div class="ttname"><a href="struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c">_RemminaPref::disable_tray_icon</a></div><div class="ttdeci">gboolean disable_tray_icon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00163">remmina_pref.h:163</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae26ffa1d95468ab0e3a85a22aa074189"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">_RemminaPrefDialog::entry_scrollback_lines</a></div><div class="ttdeci">GtkEntry * entry_scrollback_lines</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00119">remmina_pref_dialog.h:119</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_afa66945e979adc91f4956efb11115a2f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">_RemminaPrefDialog::colorbutton_color4</a></div><div class="ttdeci">GtkColorButton * colorbutton_color4</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00139">remmina_pref_dialog.h:139</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae26ffa1d95468ab0e3a85a22aa074189"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">_RemminaPrefDialog::entry_scrollback_lines</a></div><div class="ttdeci">GtkEntry * entry_scrollback_lines</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00118">remmina_pref_dialog.h:118</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_afa66945e979adc91f4956efb11115a2f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">_RemminaPrefDialog::colorbutton_color4</a></div><div class="ttdeci">GtkColorButton * colorbutton_color4</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00138">remmina_pref_dialog.h:138</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="struct___remmina_pref_html_ab78e34f426da9a37b467efbdf2183644"><div class="ttname"><a href="struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644">_RemminaPref::recent_maximum</a></div><div class="ttdeci">gint recent_maximum</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00143">remmina_pref.h:143</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1fe803f4c8b12bcbf86936e657211b37"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">_RemminaPrefDialog::button_keyboard_search_text</a></div><div class="ttdeci">GtkButton * button_keyboard_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00125">remmina_pref_dialog.h:125</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1fe803f4c8b12bcbf86936e657211b37"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">_RemminaPrefDialog::button_keyboard_search_text</a></div><div class="ttdeci">GtkButton * button_keyboard_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00124">remmina_pref_dialog.h:124</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ac342b87e3992a20833d39e864e8ab85b"><div class="ttname"><a href="struct___remmina_pref.html#ac342b87e3992a20833d39e864e8ab85b">_RemminaPref::vte_font</a></div><div class="ttdeci">gchar * vte_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00198">remmina_pref.h:198</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4f2cf3433d4f689fbe8b250dcfb8148d"><div class="ttname"><a href="struct___remmina_pref.html#a4f2cf3433d4f689fbe8b250dcfb8148d">_RemminaPref::shortcutkey_multimon</a></div><div class="ttdeci">guint shortcutkey_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00180">remmina_pref.h:180</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a9bf2ea132069b7fa70b4aa5f94b8fa21"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9bf2ea132069b7fa70b4aa5f94b8fa21">remmina_prefdiag_on_use_password_activated</a></div><div class="ttdeci">void remmina_prefdiag_on_use_password_activated(GtkSwitch *sw, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00172">remmina_pref_dialog.c:172</a></div></div>
@@ -199,66 +198,66 @@ $(document).ready(function(){initNavTree('remmina__pref__dialog_8c_source.html',
<div class="ttc" id="remmina__icon_8c_html_afbd7758d1d43c61a014b7ef00f11fa58"><div class="ttname"><a href="remmina__icon_8c.html#afbd7758d1d43c61a014b7ef00f11fa58">remmina_icon_init</a></div><div class="ttdeci">void remmina_icon_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00345">remmina_icon.c:345</a></div></div>
<div class="ttc" id="remmina__public_8h_html"><div class="ttname"><a href="remmina__public_8h.html">remmina_public.h</a></div></div>
<div class="ttc" id="plugin_8h_html_aaf53c620d115a4642130227cff4a624aa682ab42b3f4af3dd93452efdb76b8757"><div class="ttname"><a href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa682ab42b3f4af3dd93452efdb76b8757">REMMINA_PLUGIN_TYPE_PREF</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00051">plugin.h:51</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6e24f37d348137f4ee4fa783180f7b94"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">_RemminaPrefDialog::button_keyboard_screenshot</a></div><div class="ttdeci">GtkButton * button_keyboard_screenshot</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00106">remmina_pref_dialog.h:106</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af3245723de79398df91fe0e440c0e327"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">_RemminaPrefDialog::button_keyboard_viewonly</a></div><div class="ttdeci">GtkButton * button_keyboard_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00107">remmina_pref_dialog.h:107</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7e7d1f3f754e55464a80fcd8d448c47c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">_RemminaPrefDialog::checkbutton_applet_new_connection_on_top</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_new_connection_on_top</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00092">remmina_pref_dialog.h:92</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac1628fda7c9fc362575002733d4adf46"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">_RemminaPrefDialog::switch_terminal_font_system</a></div><div class="ttdeci">GtkSwitch * switch_terminal_font_system</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00112">remmina_pref_dialog.h:112</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6e24f37d348137f4ee4fa783180f7b94"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">_RemminaPrefDialog::button_keyboard_screenshot</a></div><div class="ttdeci">GtkButton * button_keyboard_screenshot</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00105">remmina_pref_dialog.h:105</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af3245723de79398df91fe0e440c0e327"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">_RemminaPrefDialog::button_keyboard_viewonly</a></div><div class="ttdeci">GtkButton * button_keyboard_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00106">remmina_pref_dialog.h:106</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7e7d1f3f754e55464a80fcd8d448c47c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">_RemminaPrefDialog::checkbutton_applet_new_connection_on_top</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_new_connection_on_top</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00091">remmina_pref_dialog.h:91</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac1628fda7c9fc362575002733d4adf46"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">_RemminaPrefDialog::switch_terminal_font_system</a></div><div class="ttdeci">GtkSwitch * switch_terminal_font_system</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00111">remmina_pref_dialog.h:111</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aef2fe0f203dd68ed30d12e3b22a4f972"><div class="ttname"><a href="struct___remmina_pref.html#aef2fe0f203dd68ed30d12e3b22a4f972">_RemminaPref::unlock_timeout</a></div><div class="ttdeci">gint unlock_timeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00191">remmina_pref.h:191</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7a61d9daaf87c47c073e474498a1a15c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">_RemminaPrefDialog::colorbutton_color13</a></div><div class="ttdeci">GtkColorButton * colorbutton_color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00148">remmina_pref_dialog.h:148</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7a61d9daaf87c47c073e474498a1a15c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">_RemminaPrefDialog::colorbutton_color13</a></div><div class="ttdeci">GtkColorButton * colorbutton_color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00147">remmina_pref_dialog.h:147</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aa9a057b8d4095678d3c0806ab37af365"><div class="ttname"><a href="struct___remmina_pref.html#aa9a057b8d4095678d3c0806ab37af365">_RemminaPref::confirm_close</a></div><div class="ttdeci">gboolean confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00146">remmina_pref.h:146</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="struct___remmina_key_chooser_arguments_html"><div class="ttname"><a href="struct___remmina_key_chooser_arguments.html">_RemminaKeyChooserArguments</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8h_source.html#l00048">remmina_key_chooser.h:48</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_af562e9b1e598fe89613310e090cb3172"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">_RemminaPrefDialog::switch_security_trust_all</a></div><div class="ttdeci">GtkSwitch * switch_security_trust_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00065">remmina_pref_dialog.h:65</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a4f80906dcdf81e03e383e38b8ca568a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">_RemminaPrefDialog::colorbutton_color5</a></div><div class="ttdeci">GtkColorButton * colorbutton_color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00140">remmina_pref_dialog.h:140</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4f80906dcdf81e03e383e38b8ca568a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">_RemminaPrefDialog::colorbutton_color5</a></div><div class="ttdeci">GtkColorButton * colorbutton_color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00139">remmina_pref_dialog.h:139</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2ae608a877b349b1af50c2456afda972"><div class="ttname"><a href="struct___remmina_pref.html#a2ae608a877b349b1af50c2456afda972">_RemminaPref::vte_shortcutkey_decrease_font</a></div><div class="ttdeci">guint vte_shortcutkey_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00206">remmina_pref.h:206</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7a269ccc996f2b110e1aa33228ca3db0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">_RemminaPrefDialog::entry_options_ssh_tcp_keepcnt</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00084">remmina_pref_dialog.h:84</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7a269ccc996f2b110e1aa33228ca3db0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">_RemminaPrefDialog::entry_options_ssh_tcp_keepcnt</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00083">remmina_pref_dialog.h:83</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a07e738aa428d0aa99503058e1c0a5f11"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">_RemminaPrefDialog::notebook_preferences</a></div><div class="ttdeci">GtkNotebook * notebook_preferences</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00050">remmina_pref_dialog.h:50</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a51d126c252f956a7ab304da158287193"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">_RemminaPrefDialog::switch_security_lock_connect</a></div><div class="ttdeci">GtkSwitch * switch_security_lock_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00062">remmina_pref_dialog.h:62</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acd24605ed4ae1e05dba2f86857e08008"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">_RemminaPrefDialog::comboboxtext_security_enc_method</a></div><div class="ttdeci">GtkComboBox * comboboxtext_security_enc_method</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00079">remmina_pref_dialog.h:79</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acd24605ed4ae1e05dba2f86857e08008"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">_RemminaPrefDialog::comboboxtext_security_enc_method</a></div><div class="ttdeci">GtkComboBox * comboboxtext_security_enc_method</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00078">remmina_pref_dialog.h:78</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a65b01db52636d3fb896cd8a5c68eb2fc"><div class="ttname"><a href="struct___remmina_pref.html#a65b01db52636d3fb896cd8a5c68eb2fc">_RemminaPref::unlock_password</a></div><div class="ttdeci">const gchar * unlock_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00189">remmina_pref.h:189</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a901034949132f369eb34c4f1ded3a0a6"><div class="ttname"><a href="struct___remmina_pref.html#a901034949132f369eb34c4f1ded3a0a6">_RemminaPref::vte_shortcutkey_paste</a></div><div class="ttdeci">guint vte_shortcutkey_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00203">remmina_pref.h:203</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a60701897d0219aad48995ab7d2d487de"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">_RemminaPrefDialog::entry_grab_color</a></div><div class="ttdeci">GtkEntry * entry_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00088">remmina_pref_dialog.h:88</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a60701897d0219aad48995ab7d2d487de"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">_RemminaPrefDialog::entry_grab_color</a></div><div class="ttdeci">GtkEntry * entry_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00087">remmina_pref_dialog.h:87</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a0b6b038291c02fd29f2fc6cd04135b97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">_RemminaPrefDialog::unlock_timeout</a></div><div class="ttdeci">GtkEntry * unlock_timeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00061">remmina_pref_dialog.h:61</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="struct___remmina_pref_dialog_html_a7ae48871b7795372a1f084b3ac344714"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">_RemminaPrefDialog::button_keyboard_decrease_font</a></div><div class="ttdeci">GtkButton * button_keyboard_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00124">remmina_pref_dialog.h:124</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7ae48871b7795372a1f084b3ac344714"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">_RemminaPrefDialog::button_keyboard_decrease_font</a></div><div class="ttdeci">GtkButton * button_keyboard_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00123">remmina_pref_dialog.h:123</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ad92d70d47d7ad80298efe591955fa8b8"><div class="ttname"><a href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">_RemminaPref::ssh_tcp_usrtimeout</a></div><div class="ttdeci">gint ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00171">remmina_pref.h:171</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a24a8c38ab11389b860d0658812ff7bbc"><div class="ttname"><a href="struct___remmina_color_pref.html#a24a8c38ab11389b860d0658812ff7bbc">_RemminaColorPref::color13</a></div><div class="ttdeci">gchar * color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00127">remmina_pref.h:127</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9cd6e07816b16f7f94f55193426af4e0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">_RemminaPrefDialog::button_keyboard_switch_tab_left</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_left</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00101">remmina_pref_dialog.h:101</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9cd6e07816b16f7f94f55193426af4e0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">_RemminaPrefDialog::button_keyboard_switch_tab_left</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_left</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00100">remmina_pref_dialog.h:100</a></div></div>
<div class="ttc" id="struct___remmina_pref_plugin_html_a9ea805605a462db2ce7912ef05a4fd9d"><div class="ttname"><a href="struct___remmina_pref_plugin.html#a9ea805605a462db2ce7912ef05a4fd9d">_RemminaPrefPlugin::pref_label</a></div><div class="ttdeci">const gchar * pref_label</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00131">plugin.h:131</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_adc2763311ece7ab6b505d4ec56391f69"><div class="ttname"><a href="remmina__pref__dialog_8c.html#adc2763311ece7ab6b505d4ec56391f69">remmina_pref_dialog_on_close_clicked</a></div><div class="ttdeci">void remmina_pref_dialog_on_close_clicked(GtkWidget *widget, RemminaPrefDialog *dialog)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00212">remmina_pref_dialog.c:212</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a3a830a938ddb7dde8a580e108a7ad028"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">_RemminaPrefDialog::checkbutton_applet_start_in_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_start_in_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00096">remmina_pref_dialog.h:96</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa618b528fc78d3253f0fc2c5ffacbde2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">_RemminaPrefDialog::button_keyboard_auto_fit</a></div><div class="ttdeci">GtkButton * button_keyboard_auto_fit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00100">remmina_pref_dialog.h:100</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a3a830a938ddb7dde8a580e108a7ad028"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">_RemminaPrefDialog::checkbutton_applet_start_in_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_start_in_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00095">remmina_pref_dialog.h:95</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa618b528fc78d3253f0fc2c5ffacbde2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">_RemminaPrefDialog::button_keyboard_auto_fit</a></div><div class="ttdeci">GtkButton * button_keyboard_auto_fit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00099">remmina_pref_dialog.h:99</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a363642437f5920c93fe35c07ef3601cc"><div class="ttname"><a href="struct___remmina_pref.html#a363642437f5920c93fe35c07ef3601cc">_RemminaPref::shortcutkey_grab</a></div><div class="ttdeci">guint shortcutkey_grab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00181">remmina_pref.h:181</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a6d77a2663675f01670ed7cc2f14e39c9"><div class="ttname"><a href="struct___remmina_pref.html#a6d77a2663675f01670ed7cc2f14e39c9">_RemminaPref::always_show_tab</a></div><div class="ttdeci">gboolean always_show_tab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00151">remmina_pref.h:151</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a066bf2941261efad64c5942a69a6e33d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">_RemminaPrefDialog::label_terminal_background</a></div><div class="ttdeci">GtkLabel * label_terminal_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00117">remmina_pref_dialog.h:117</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a066bf2941261efad64c5942a69a6e33d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">_RemminaPrefDialog::label_terminal_background</a></div><div class="ttdeci">GtkLabel * label_terminal_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00116">remmina_pref_dialog.h:116</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html"><div class="ttname"><a href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00047">remmina_pref_dialog.h:47</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a3fe278a66ed7fba91a944df3c60dd7b6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">_RemminaPrefDialog::button_term_cs</a></div><div class="ttdeci">GtkFileChooser * button_term_cs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00151">remmina_pref_dialog.h:151</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a3fe278a66ed7fba91a944df3c60dd7b6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">_RemminaPrefDialog::button_term_cs</a></div><div class="ttdeci">GtkFileChooser * button_term_cs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00150">remmina_pref_dialog.h:150</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2859598ef2f87afb5a970a197a503765"><div class="ttname"><a href="struct___remmina_pref.html#a2859598ef2f87afb5a970a197a503765">_RemminaPref::shortcutkey_scale</a></div><div class="ttdeci">guint shortcutkey_scale</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00179">remmina_pref.h:179</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a877c22a6809bb846cc6555c4100ef877"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">_RemminaPrefDialog::colorbutton_color0</a></div><div class="ttdeci">GtkColorButton * colorbutton_color0</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00135">remmina_pref_dialog.h:135</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a5e3df5e92bbf0aec0f317216de88681d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">_RemminaPrefDialog::comboboxtext_options_scale_quality</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00076">remmina_pref_dialog.h:76</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac15ed49a7e4ab8926bf4385737e0382b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">_RemminaPrefDialog::entry_options_scroll</a></div><div class="ttdeci">GtkEntry * entry_options_scroll</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00086">remmina_pref_dialog.h:86</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a877c22a6809bb846cc6555c4100ef877"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">_RemminaPrefDialog::colorbutton_color0</a></div><div class="ttdeci">GtkColorButton * colorbutton_color0</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00134">remmina_pref_dialog.h:134</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a5e3df5e92bbf0aec0f317216de88681d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">_RemminaPrefDialog::comboboxtext_options_scale_quality</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00075">remmina_pref_dialog.h:75</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac15ed49a7e4ab8926bf4385737e0382b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">_RemminaPrefDialog::entry_options_scroll</a></div><div class="ttdeci">GtkEntry * entry_options_scroll</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00085">remmina_pref_dialog.h:85</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a120e306368b8fc06841c2fc2d48778c5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">_RemminaPrefDialog::checkbutton_appearance_show_tabs</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_show_tabs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00068">remmina_pref_dialog.h:68</a></div></div>
<div class="ttc" id="remmina__icon_8c_html_ae477ccd85ab1d878d243aed7fa5e48ae"><div class="ttname"><a href="remmina__icon_8c.html#ae477ccd85ab1d878d243aed7fa5e48ae">remmina_icon_is_autostart</a></div><div class="ttdeci">gboolean remmina_icon_is_autostart(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00421">remmina_icon.c:421</a></div></div>
<div class="ttc" id="remmina__public_8c_html_a4573e086e1ff8507eb9447b25bf11b92"><div class="ttname"><a href="remmina__public_8c.html#a4573e086e1ff8507eb9447b25bf11b92">remmina_public_gtk_builder_new_from_resource</a></div><div class="ttdeci">GtkBuilder * remmina_public_gtk_builder_new_from_resource(gchar *resource)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__public_8c_source.html#l00572">remmina_public.c:572</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a956db17e48d1c446df7677d3e9f917e2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">_RemminaPrefDialog::colorbutton_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00116">remmina_pref_dialog.h:116</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a956db17e48d1c446df7677d3e9f917e2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">_RemminaPrefDialog::colorbutton_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00115">remmina_pref_dialog.h:115</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a2e3c32df32107ad3f4b9ea85fc001368"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a2e3c32df32107ad3f4b9ea85fc001368">remmina_pref_dialog</a></div><div class="ttdeci">static RemminaPrefDialog * remmina_pref_dialog</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00058">remmina_pref_dialog.c:58</a></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="struct___remmina_color_pref_html_ac8ae5e31836066ac69f7c907f30d2ffc"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8ae5e31836066ac69f7c907f30d2ffc">_RemminaColorPref::color9</a></div><div class="ttdeci">gchar * color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00123">remmina_pref.h:123</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a2d0facd5a0480a450d525ce9ef4fed60"><div class="ttname"><a href="struct___remmina_color_pref.html#a2d0facd5a0480a450d525ce9ef4fed60">_RemminaColorPref::color5</a></div><div class="ttdeci">gchar * color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00119">remmina_pref.h:119</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a1d9bd13f411189c9d8d8a08ceb77e8d7"><div class="ttname"><a href="struct___remmina_color_pref.html#a1d9bd13f411189c9d8d8a08ceb77e8d7">_RemminaColorPref::color7</a></div><div class="ttdeci">gchar * color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00121">remmina_pref.h:121</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a46e2af690d5d39c6d3ec2c07431d76a8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">_RemminaPrefDialog::colorbutton_color11</a></div><div class="ttdeci">GtkColorButton * colorbutton_color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00146">remmina_pref_dialog.h:146</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6cf1e8aa7d474aacc471b625d6330826"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">_RemminaPrefDialog::button_keyboard_host_key</a></div><div class="ttdeci">GtkButton * button_keyboard_host_key</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00098">remmina_pref_dialog.h:98</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a46e2af690d5d39c6d3ec2c07431d76a8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">_RemminaPrefDialog::colorbutton_color11</a></div><div class="ttdeci">GtkColorButton * colorbutton_color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00145">remmina_pref_dialog.h:145</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6cf1e8aa7d474aacc471b625d6330826"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">_RemminaPrefDialog::button_keyboard_host_key</a></div><div class="ttdeci">GtkButton * button_keyboard_host_key</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00097">remmina_pref_dialog.h:97</a></div></div>
<div class="ttc" id="remmina__string__list_8c_html_ab1bacc097f59c20b477d954bb863a5e0"><div class="ttname"><a href="remmina__string__list_8c.html#ab1bacc097f59c20b477d954bb863a5e0">remmina_string_list_set_text</a></div><div class="ttdeci">void remmina_string_list_set_text(const gchar *text, const gboolean clear_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__list_8c_source.html#l00171">remmina_string_list.c:171</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aaaa2467b387e8d92b080dd407d2b3412"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">_RemminaPrefDialog::colorbutton_highlight</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00132">remmina_pref_dialog.h:132</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01012">remmina_pref.c:1012</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a4a8bc03207480e0e616794ea5efc71f6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">_RemminaPrefDialog::comboboxtext_appearance_tab_interface</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_tab_interface</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00075">remmina_pref_dialog.h:75</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aaaa2467b387e8d92b080dd407d2b3412"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">_RemminaPrefDialog::colorbutton_highlight</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00131">remmina_pref_dialog.h:131</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ac3b15f811daf0aaf8bacd67f1b47aa14"><div class="ttname"><a href="remmina__pref_8c.html#ac3b15f811daf0aaf8bacd67f1b47aa14">remmina_pref_clear_recent</a></div><div class="ttdeci">void remmina_pref_clear_recent(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00976">remmina_pref.c:976</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4a8bc03207480e0e616794ea5efc71f6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">_RemminaPrefDialog::comboboxtext_appearance_tab_interface</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_tab_interface</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00074">remmina_pref_dialog.h:74</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a712773f926eb2ec030d6af80cdc33095"><div class="ttname"><a href="struct___remmina_pref.html#a712773f926eb2ec030d6af80cdc33095">_RemminaPref::shortcutkey_nexttab</a></div><div class="ttdeci">guint shortcutkey_nexttab</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00177">remmina_pref.h:177</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_ad9db3e5d980f28a2764be2ee6db18fef"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ad9db3e5d980f28a2764be2ee6db18fef">remmina_prefdiag_on_grab_color_activated</a></div><div class="ttdeci">void remmina_prefdiag_on_grab_color_activated(GtkSwitch *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00164">remmina_pref_dialog.c:164</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_acee9d7384a5e3949df53cdf54390bbcd"><div class="ttname"><a href="struct___remmina_pref.html#acee9d7384a5e3949df53cdf54390bbcd">_RemminaPref::applet_hide_count</a></div><div class="ttdeci">gboolean applet_hide_count</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00162">remmina_pref.h:162</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a73952b074a100371c33fe603f3603c9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">_RemminaPrefDialog::checkbutton_appearance_show_notes</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_show_notes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00069">remmina_pref_dialog.h:69</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acaf49bcad1a8975b1ab0de2c241ff912"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">_RemminaPrefDialog::checkbutton_applet_disable_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_disable_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00094">remmina_pref_dialog.h:94</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acaf49bcad1a8975b1ab0de2c241ff912"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">_RemminaPrefDialog::checkbutton_applet_disable_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_disable_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00093">remmina_pref_dialog.h:93</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a2bf96a40b9f63300d02e158b26546203"><div class="ttname"><a href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">_RemminaPref::ssh_tcp_keepidle</a></div><div class="ttdeci">gint ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00168">remmina_pref.h:168</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a517186be14ab61d72d6212592b958972"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">_RemminaPrefDialog::comboboxtext_options_ssh_loglevel</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_ssh_loglevel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00077">remmina_pref_dialog.h:77</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a517186be14ab61d72d6212592b958972"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">_RemminaPrefDialog::comboboxtext_options_ssh_loglevel</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_ssh_loglevel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00076">remmina_pref_dialog.h:76</a></div></div>
<div class="ttc" id="remmina__string__list_8h_html"><div class="ttname"><a href="remmina__string__list_8h.html">remmina_string_list.h</a></div></div>
<div class="ttc" id="struct___remmina_key_chooser_arguments_html_ac3b1c476480609afbbe21a2bb507e14c"><div class="ttname"><a href="struct___remmina_key_chooser_arguments.html#ac3b1c476480609afbbe21a2bb507e14c">_RemminaKeyChooserArguments::state</a></div><div class="ttdeci">guint state</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8h_source.html#l00050">remmina_key_chooser.h:50</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a599f643c5a42ffd9c6a382199f147efd"><div class="ttname"><a href="struct___remmina_pref.html#a599f643c5a42ffd9c6a382199f147efd">_RemminaPref::lock_edit</a></div><div class="ttdeci">gboolean lock_edit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00193">remmina_pref.h:193</a></div></div>
@@ -267,76 +266,75 @@ $(document).ready(function(){initNavTree('remmina__pref__dialog_8c_source.html',
<div class="ttc" id="remmina__string__list_8c_html_aa9ca6ccf40b954051a0daa5c1efeef87"><div class="ttname"><a href="remmina__string__list_8c.html#aa9ca6ccf40b954051a0daa5c1efeef87">remmina_string_list_set_titles</a></div><div class="ttdeci">void remmina_string_list_set_titles(gchar *title1, gchar *title2)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__string__list_8c_source.html#l00254">remmina_string_list.c:254</a></div></div>
<div class="ttc" id="struct___remmina_pref_plugin_html_a377073db6f59790bfc3f69c62d4715e4"><div class="ttname"><a href="struct___remmina_pref_plugin.html#a377073db6f59790bfc3f69c62d4715e4">_RemminaPrefPlugin::get_pref_body</a></div><div class="ttdeci">GtkWidget *(* get_pref_body)(struct _RemminaPrefPlugin *instance)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00132">plugin.h:132</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_priv_html"><div class="ttname"><a href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00043">remmina_pref_dialog.h:43</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a16f07e2dad152f37ebbabdba18346ff3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">_RemminaPrefDialog::label_terminal_cursor_color</a></div><div class="ttdeci">GtkLabel * label_terminal_cursor_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00126">remmina_pref_dialog.h:126</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a387518a27e83993284e7fef26c77863c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">_RemminaPrefDialog::label_terminal_bold_color</a></div><div class="ttdeci">GtkLabel * label_terminal_bold_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00127">remmina_pref_dialog.h:127</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a16f07e2dad152f37ebbabdba18346ff3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">_RemminaPrefDialog::label_terminal_cursor_color</a></div><div class="ttdeci">GtkLabel * label_terminal_cursor_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00125">remmina_pref_dialog.h:125</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a387518a27e83993284e7fef26c77863c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">_RemminaPrefDialog::label_terminal_bold_color</a></div><div class="ttdeci">GtkLabel * label_terminal_bold_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00126">remmina_pref_dialog.h:126</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#l00079">rcw.c:79</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a8d7f02ac9b6890ad675b702708bc4af9"><div class="ttname"><a href="struct___remmina_color_pref.html#a8d7f02ac9b6890ad675b702708bc4af9">_RemminaColorPref::color6</a></div><div class="ttdeci">gchar * color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00120">remmina_pref.h:120</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae4c194f4711959dd2c96492b9a0e7f61"><div class="ttname"><a href="struct___remmina_pref.html#ae4c194f4711959dd2c96492b9a0e7f61">_RemminaPref::trust_all</a></div><div class="ttdeci">gboolean trust_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00196">remmina_pref.h:196</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_plugin_html"><div class="ttname"><a href="struct___remmina_pref_plugin.html">_RemminaPrefPlugin</a></div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00124">plugin.h:124</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2439e77fa90db834ee0ab308081d3997"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">_RemminaPrefDialog::button_keyboard_multimon</a></div><div class="ttdeci">GtkButton * button_keyboard_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00104">remmina_pref_dialog.h:104</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2439e77fa90db834ee0ab308081d3997"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">_RemminaPrefDialog::button_keyboard_multimon</a></div><div class="ttdeci">GtkButton * button_keyboard_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00103">remmina_pref_dialog.h:103</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="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__pref_8c_html_a400f7319fd3996a13399ef72bcf0a2fd"><div class="ttname"><a href="remmina__pref_8c.html#a400f7319fd3996a13399ef72bcf0a2fd">remmina_pref_init</a></div><div class="ttdeci">void remmina_pref_init(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00219">remmina_pref.c:219</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acd1612fbf90b34179cac773ed8f3bdca"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">_RemminaPrefDialog::colorbutton_colorBD</a></div><div class="ttdeci">GtkColorButton * colorbutton_colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00134">remmina_pref_dialog.h:134</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acd1612fbf90b34179cac773ed8f3bdca"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">_RemminaPrefDialog::colorbutton_colorBD</a></div><div class="ttdeci">GtkColorButton * colorbutton_colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00133">remmina_pref_dialog.h:133</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="struct___remmina_pref_html_aa3dc5f8676c4747f2fcaf9a68d16d11b"><div class="ttname"><a href="struct___remmina_pref.html#aa3dc5f8676c4747f2fcaf9a68d16d11b">_RemminaPref::shortcutkey_toolbar</a></div><div class="ttdeci">guint shortcutkey_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00186">remmina_pref.h:186</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_ad4b3f23a900c8f07814fd0fb26f29e5f"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ad4b3f23a900c8f07814fd0fb26f29e5f">remmina_pref_on_button_resolutions_clicked</a></div><div class="ttdeci">void remmina_pref_on_button_resolutions_clicked(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00085">remmina_pref_dialog.c:85</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a2458dfa5d1188dceb52795faa20f8257"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a2458dfa5d1188dceb52795faa20f8257">pref_actions</a></div><div class="ttdeci">static GActionEntry pref_actions[]</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00062">remmina_pref_dialog.c:62</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a5d92875f0034e5fc3d360d97d5992bd4"><div class="ttname"><a href="struct___remmina_color_pref.html#a5d92875f0034e5fc3d360d97d5992bd4">_RemminaColorPref::color8</a></div><div class="ttdeci">gchar * color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00122">remmina_pref.h:122</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a86e2ecb7e448ef661c2857de7b724061"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">_RemminaPrefDialog::comboboxtext_options_double_click</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_double_click</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00073">remmina_pref_dialog.h:73</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a86e2ecb7e448ef661c2857de7b724061"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">_RemminaPrefDialog::comboboxtext_options_double_click</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_double_click</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00072">remmina_pref_dialog.h:72</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a0c5f28eea2fe32297da5f7833df7b131"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a0c5f28eea2fe32297da5f7833df7b131">remmina_pref_on_button_keystrokes_clicked</a></div><div class="ttdeci">void remmina_pref_on_button_keystrokes_clicked(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00150">remmina_pref_dialog.c:150</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__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00799">remmina_pref.c:799</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_ae17aaf37449083a4322b6748c8f3a39f"><div class="ttname"><a href="remmina__pref_8c.html#ae17aaf37449083a4322b6748c8f3a39f">remmina_pref_save</a></div><div class="ttdeci">gboolean remmina_pref_save(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l00770">remmina_pref.c:770</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a082f698b8aa7cec3c1cb0fd987d4358f"><div class="ttname"><a href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">_RemminaPref::ssh_tcp_keepcnt</a></div><div class="ttdeci">gint ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00170">remmina_pref.h:170</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a999b74e3aab2e7fbc4431e803511b568"><div class="ttname"><a href="struct___remmina_pref.html#a999b74e3aab2e7fbc4431e803511b568">_RemminaPref::applet_new_ontop</a></div><div class="ttdeci">gboolean applet_new_ontop</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00161">remmina_pref.h:161</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_ae2267a1de362addcee0c5801612dc5d6"><div class="ttname"><a href="struct___remmina_pref.html#ae2267a1de362addcee0c5801612dc5d6">_RemminaPref::screenshot_name</a></div><div class="ttdeci">const gchar * screenshot_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00138">remmina_pref.h:138</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_afa7c4748f22173796b35d1d50b6c1914"><div class="ttname"><a href="struct___remmina_color_pref.html#afa7c4748f22173796b35d1d50b6c1914">_RemminaColorPref::color4</a></div><div class="ttdeci">gchar * color4</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00118">remmina_pref.h:118</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1138eed66b8fe0a2386ee07ec33557be"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">_RemminaPrefDialog::button_keyboard_minimize</a></div><div class="ttdeci">GtkButton * button_keyboard_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00108">remmina_pref_dialog.h:108</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1138eed66b8fe0a2386ee07ec33557be"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">_RemminaPrefDialog::button_keyboard_minimize</a></div><div class="ttdeci">GtkButton * button_keyboard_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00107">remmina_pref_dialog.h:107</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a9258f6c3c18f14b4abb148aa43e6bc0e"><div class="ttname"><a href="struct___remmina_pref.html#a9258f6c3c18f14b4abb148aa43e6bc0e">_RemminaPref::hide_connection_toolbar</a></div><div class="ttdeci">gboolean hide_connection_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00153">remmina_pref.h:153</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a332ae31bb6d7376144aeda9b9e11b0f8"><div class="ttname"><a href="struct___remmina_pref.html#a332ae31bb6d7376144aeda9b9e11b0f8">_RemminaPref::audit</a></div><div class="ttdeci">gboolean audit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00195">remmina_pref.h:195</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aad290cb37b80d5295452ad1fd4322acc"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">_RemminaPrefDialog::checkbutton_options_ssh_parseconfig</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00080">remmina_pref_dialog.h:80</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aad290cb37b80d5295452ad1fd4322acc"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">_RemminaPrefDialog::checkbutton_options_ssh_parseconfig</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00079">remmina_pref_dialog.h:79</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_af348bb968fd98ba269c4e253750e2400"><div class="ttname"><a href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">_RemminaPref::sshtunnel_port</a></div><div class="ttdeci">gint sshtunnel_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00167">remmina_pref.h:167</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a920221c2f304bfa278d0944bbbb6e011"><div class="ttname"><a href="struct___remmina_pref.html#a920221c2f304bfa278d0944bbbb6e011">_RemminaPref::datadir_path</a></div><div class="ttdeci">const gchar * datadir_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00134">remmina_pref.h:134</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a20eb324fa74f18cd063289197e72deae"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">_RemminaPrefDialog::dialog</a></div><div class="ttdeci">GtkWidget * dialog</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00049">remmina_pref_dialog.h:49</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ad92dc760283fa996f40a976bcc3f3d2d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">_RemminaPrefDialog::switch_options_deny_screenshot_clipboard</a></div><div class="ttdeci">GtkSwitch * switch_options_deny_screenshot_clipboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00057">remmina_pref_dialog.h:57</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a470290d26c88259265912a3e0018b662"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a470290d26c88259265912a3e0018b662">remmina_pref_dialog_clear_recent</a></div><div class="ttdeci">void remmina_pref_dialog_clear_recent(GtkWidget *widget, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00136">remmina_pref_dialog.c:136</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa6e591a542ea2a29a5a00e2bf411d2c6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">_RemminaPrefDialog::checkbutton_applet_hide_totals</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_hide_totals</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00093">remmina_pref_dialog.h:93</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ad9ea2466137b35ccef6896126954bc1a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">_RemminaPrefDialog::colorbutton_color10</a></div><div class="ttdeci">GtkColorButton * colorbutton_color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00145">remmina_pref_dialog.h:145</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa3278e52c1e387ab37a6c384f83ad03a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">_RemminaPrefDialog::switch_permit_news</a></div><div class="ttdeci">GtkSwitch * switch_permit_news</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00072">remmina_pref_dialog.h:72</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa6e591a542ea2a29a5a00e2bf411d2c6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">_RemminaPrefDialog::checkbutton_applet_hide_totals</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_hide_totals</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00092">remmina_pref_dialog.h:92</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ad9ea2466137b35ccef6896126954bc1a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">_RemminaPrefDialog::colorbutton_color10</a></div><div class="ttdeci">GtkColorButton * colorbutton_color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00144">remmina_pref_dialog.h:144</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8c_html_a722371d3ad01079279d5e86d7c8400e1"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a></div><div class="ttdeci">void remmina_pref_dialog_on_action_close(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00203">remmina_pref_dialog.c:203</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae2c902d8ab3e2cb84eaec25d597afac8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">_RemminaPrefDialog::button_keyboard_switch_tab_right</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_right</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00102">remmina_pref_dialog.h:102</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae2c902d8ab3e2cb84eaec25d597afac8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">_RemminaPrefDialog::button_keyboard_switch_tab_right</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_right</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00101">remmina_pref_dialog.h:101</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_a8c109e8479617a5e6da0fcaccf511c60"><div class="ttname"><a href="struct___remmina_color_pref.html#a8c109e8479617a5e6da0fcaccf511c60">_RemminaColorPref::color15</a></div><div class="ttdeci">gchar * color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00129">remmina_pref.h:129</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a917c214ab0662ebd06db3eb7f7c47bf2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">_RemminaPrefDialog::comboboxtext_appearance_view_mode</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00074">remmina_pref_dialog.h:74</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a01a51aec4952690a078cb108098adbeb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">_RemminaPrefDialog::button_keyboard_increase_font</a></div><div class="ttdeci">GtkButton * button_keyboard_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00123">remmina_pref_dialog.h:123</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adc48fc8abfc2c8e06fea5d42d9790ec9"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">_RemminaPrefDialog::button_keyboard_scaled</a></div><div class="ttdeci">GtkButton * button_keyboard_scaled</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00103">remmina_pref_dialog.h:103</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a917c214ab0662ebd06db3eb7f7c47bf2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">_RemminaPrefDialog::comboboxtext_appearance_view_mode</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00073">remmina_pref_dialog.h:73</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a01a51aec4952690a078cb108098adbeb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">_RemminaPrefDialog::button_keyboard_increase_font</a></div><div class="ttdeci">GtkButton * button_keyboard_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00122">remmina_pref_dialog.h:122</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adc48fc8abfc2c8e06fea5d42d9790ec9"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">_RemminaPrefDialog::button_keyboard_scaled</a></div><div class="ttdeci">GtkButton * button_keyboard_scaled</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00102">remmina_pref_dialog.h:102</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aaff337efd0f03b496a2203068218da7f"><div class="ttname"><a href="struct___remmina_color_pref.html#aaff337efd0f03b496a2203068218da7f">_RemminaColorPref::cursor_foreground</a></div><div class="ttdeci">gchar * cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00109">remmina_pref.h:109</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_ac8e90ea1299ef641fbef1495f899cf97"><div class="ttname"><a href="struct___remmina_color_pref.html#ac8e90ea1299ef641fbef1495f899cf97">_RemminaColorPref::color11</a></div><div class="ttdeci">gchar * color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00125">remmina_pref.h:125</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1b6e2744506a9e396d8cbae0529356bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">_RemminaPrefDialog::colorbutton_color8</a></div><div class="ttdeci">GtkColorButton * colorbutton_color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00143">remmina_pref_dialog.h:143</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adda92d5335d281571b58a40f3ebe95d4"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">_RemminaPrefDialog::colorbutton_background</a></div><div class="ttdeci">GtkColorButton * colorbutton_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00118">remmina_pref_dialog.h:118</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1b6e2744506a9e396d8cbae0529356bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">_RemminaPrefDialog::colorbutton_color8</a></div><div class="ttdeci">GtkColorButton * colorbutton_color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00142">remmina_pref_dialog.h:142</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adda92d5335d281571b58a40f3ebe95d4"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">_RemminaPrefDialog::colorbutton_background</a></div><div class="ttdeci">GtkColorButton * colorbutton_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00117">remmina_pref_dialog.h:117</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>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6bf0904ad661465e2a522b7dced372ab"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">_RemminaPrefDialog::colorbutton_cursor</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00130">remmina_pref_dialog.h:130</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6bf0904ad661465e2a522b7dced372ab"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">_RemminaPrefDialog::colorbutton_cursor</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00129">remmina_pref_dialog.h:129</a></div></div>
<div class="ttc" id="remmina__passwd_8h_html"><div class="ttname"><a href="remmina__passwd_8h.html">remmina_passwd.h</a></div></div>
<div class="ttc" id="struct___remmina_key_chooser_arguments_html_ad6bf8db773a58c4b73ce7902f76a860f"><div class="ttname"><a href="struct___remmina_key_chooser_arguments.html#ad6bf8db773a58c4b73ce7902f76a860f">_RemminaKeyChooserArguments::keyval</a></div><div class="ttdeci">guint keyval</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8h_source.html#l00049">remmina_key_chooser.h:49</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adf1125853e83c16e1ce9704c761d7b9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">_RemminaPrefDialog::colorbutton_color7</a></div><div class="ttdeci">GtkColorButton * colorbutton_color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00142">remmina_pref_dialog.h:142</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adf1125853e83c16e1ce9704c761d7b9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">_RemminaPrefDialog::colorbutton_color7</a></div><div class="ttdeci">GtkColorButton * colorbutton_color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00141">remmina_pref_dialog.h:141</a></div></div>
<div class="ttc" id="struct___remmina_key_chooser_arguments_html_a2fd9e4d001913994dd7ffee24563bde7"><div class="ttname"><a href="struct___remmina_key_chooser_arguments.html#a2fd9e4d001913994dd7ffee24563bde7">_RemminaKeyChooserArguments::response</a></div><div class="ttdeci">gint response</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8h_source.html#l00052">remmina_key_chooser.h:52</a></div></div>
<div class="ttc" id="remmina__icon_8c_html_a5b1bc5b1130b31ea9c9cb7164fb82f1d"><div class="ttname"><a href="remmina__icon_8c.html#a5b1bc5b1130b31ea9c9cb7164fb82f1d">remmina_icon_set_autostart</a></div><div class="ttdeci">void remmina_icon_set_autostart(gboolean autostart)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__icon_8c_source.html#l00434">remmina_icon.c:434</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a85e3d3ef34fb8969211860df159a04d8"><div class="ttname"><a href="struct___remmina_pref.html#a85e3d3ef34fb8969211860df159a04d8">_RemminaPref::color_pref</a></div><div class="ttdeci">RemminaColorPref color_pref</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00233">remmina_pref.h:233</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4eb866c8e08104362aa51f14f5894e51"><div class="ttname"><a href="struct___remmina_pref.html#a4eb866c8e08104362aa51f14f5894e51">_RemminaPref::shortcutkey_viewonly</a></div><div class="ttdeci">guint shortcutkey_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00182">remmina_pref.h:182</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00691">remmina_pref_dialog.c:691</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a270f2b3596d5f836b0db47b21b049fcb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">_RemminaPrefDialog::priv</a></div><div class="ttdeci">RemminaPrefDialogPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00153">remmina_pref_dialog.h:153</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_ab09f64d25a5a016281a56edca7e2d70a"><div class="ttname"><a href="remmina__pref__dialog_8c.html#ab09f64d25a5a016281a56edca7e2d70a">remmina_pref_dialog_new</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00686">remmina_pref_dialog.c:686</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a270f2b3596d5f836b0db47b21b049fcb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">_RemminaPrefDialog::priv</a></div><div class="ttdeci">RemminaPrefDialogPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00152">remmina_pref_dialog.h:152</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a4a74d72f34e960155c489e0f91574d2b"><div class="ttname"><a href="struct___remmina_pref.html#a4a74d72f34e960155c489e0f91574d2b">_RemminaPref::fullscreen_on_auto</a></div><div class="ttdeci">gboolean fullscreen_on_auto</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00150">remmina_pref.h:150</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8c_html_a9f24dad52fd8f57961ac7c5df58f251e"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00847">remmina_pref_dialog.c:847</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a280cb6d6e959c7e395a887defde7a485"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">_RemminaPrefDialog::colorbutton_color9</a></div><div class="ttdeci">GtkColorButton * colorbutton_color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00144">remmina_pref_dialog.h:144</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aca3d7c47a24dc2722496670937a57cbb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">_RemminaPrefDialog::label_terminal_bright_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_bright_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00129">remmina_pref_dialog.h:129</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8c_html_a9f24dad52fd8f57961ac7c5df58f251e"><div class="ttname"><a href="remmina__pref__dialog_8c.html#a9f24dad52fd8f57961ac7c5df58f251e">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00840">remmina_pref_dialog.c:840</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a280cb6d6e959c7e395a887defde7a485"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">_RemminaPrefDialog::colorbutton_color9</a></div><div class="ttdeci">GtkColorButton * colorbutton_color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00143">remmina_pref_dialog.h:143</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aca3d7c47a24dc2722496670937a57cbb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">_RemminaPrefDialog::label_terminal_bright_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_bright_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00128">remmina_pref_dialog.h:128</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a2359237c0255ff8f32d5c7590fad1fd6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">_RemminaPrefDialog::switch_appearance_grab_color</a></div><div class="ttdeci">GtkSwitch * switch_appearance_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00056">remmina_pref_dialog.h:56</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a7c139ee405d50330b1d9bfb646c0258c"><div class="ttname"><a href="struct___remmina_pref.html#a7c139ee405d50330b1d9bfb646c0258c">_RemminaPref::dark_theme</a></div><div class="ttdeci">gboolean dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00148">remmina_pref.h:148</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_aad6660781f636788d5f05b3bac85d676"><div class="ttname"><a href="struct___remmina_pref.html#aad6660781f636788d5f05b3bac85d676">_RemminaPref::save_view_mode</a></div><div class="ttdeci">gboolean save_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00139">remmina_pref.h:139</a></div></div>
<div class="ttc" id="struct___remmina_color_pref_html_aa4a65b76fbdc0b3e97d3046f0b48e1ff"><div class="ttname"><a href="struct___remmina_color_pref.html#aa4a65b76fbdc0b3e97d3046f0b48e1ff">_RemminaColorPref::color1</a></div><div class="ttdeci">gchar * color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00115">remmina_pref.h:115</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a97ad6670df5c399df233f0a74f5c148f"><div class="ttname"><a href="struct___remmina_pref.html#a97ad6670df5c399df233f0a74f5c148f">_RemminaPref::fullscreen_toolbar_visibility</a></div><div class="ttdeci">gint fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00157">remmina_pref.h:157</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a995f847743fb828f3400559cea4fff35"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">_RemminaPrefDialog::colorbutton_color12</a></div><div class="ttdeci">GtkColorButton * colorbutton_color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00147">remmina_pref_dialog.h:147</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a995f847743fb828f3400559cea4fff35"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">_RemminaPrefDialog::colorbutton_color12</a></div><div class="ttdeci">GtkColorButton * colorbutton_color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00146">remmina_pref_dialog.h:146</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ab4c71aaab278901ae411d68abf97a123"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">_RemminaPrefDialog::filechooserbutton_options_datadir_path</a></div><div class="ttdeci">GtkFileChooser * filechooserbutton_options_datadir_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00052">remmina_pref_dialog.h:52</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a8d88c38e27116711851bfb573e90b811"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">_RemminaPrefDialog::colorbutton_color1</a></div><div class="ttdeci">GtkColorButton * colorbutton_color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00136">remmina_pref_dialog.h:136</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a8d88c38e27116711851bfb573e90b811"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">_RemminaPrefDialog::colorbutton_color1</a></div><div class="ttdeci">GtkColorButton * colorbutton_color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00135">remmina_pref_dialog.h:135</a></div></div>
<div class="ttc" id="remmina__key__chooser_8c_html_ae4901c270a9c35ed2258c92cdc897474"><div class="ttname"><a href="remmina__key__chooser_8c.html#ae4901c270a9c35ed2258c92cdc897474">remmina_key_chooser_get_keyval</a></div><div class="ttdeci">guint remmina_key_chooser_get_keyval(const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8c_source.html#l00100">remmina_key_chooser.c:100</a></div></div>
<div class="ttc" id="struct___remmina_pref_html_a3d7ca8d4ce2e28daebd72e336adef356"><div class="ttname"><a href="struct___remmina_pref.html#a3d7ca8d4ce2e28daebd72e336adef356">_RemminaPref::grab_color_switch</a></div><div class="ttdeci">gboolean grab_color_switch</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8h_source.html#l00159">remmina_pref.h:159</a></div></div>
<div class="ttc" id="remmina__key__chooser_8c_html_a5aba1462f1026818581e91155b12618f"><div class="ttname"><a href="remmina__key__chooser_8c.html#a5aba1462f1026818581e91155b12618f">remmina_key_chooser_get_value</a></div><div class="ttdeci">gchar * remmina_key_chooser_get_value(guint keyval, guint state)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__key__chooser_8c_source.html#l00082">remmina_key_chooser.c:82</a></div></div>
diff --git a/public/remmina__pref__dialog_8h.html b/public/remmina__pref__dialog_8h.html
index 96f9e4055..85df55377 100644
--- a/public/remmina__pref__dialog_8h.html
+++ b/public/remmina__pref__dialog_8h.html
@@ -174,7 +174,7 @@ Functions</h2></td></tr>
<tr><td class="fieldname"><a id="a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c"></a>REMMINA_PREF_APPLET_TAB&#160;</td><td class="fielddoc"></td></tr>
</table>
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00156">156</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00155">155</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -195,7 +195,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00847">847</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00840">840</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
@@ -225,7 +225,7 @@ Functions</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00691">691</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8c_source.html#l00686">686</a> of file <a class="el" href="remmina__pref__dialog_8c_source.html">remmina_pref_dialog.c</a>.</p>
</div>
</div>
diff --git a/public/remmina__pref__dialog_8h_source.html b/public/remmina__pref__dialog_8h_source.html
index eb36c9b5f..6dbcc4379 100644
--- a/public/remmina__pref__dialog_8h_source.html
+++ b/public/remmina__pref__dialog_8h_source.html
@@ -86,119 +86,118 @@ $(document).ready(function(){initNavTree('remmina__pref__dialog_8h_source.html',
<div class="title">remmina_pref_dialog.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__pref__dialog_8h.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) 2017-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">#pragma once</span></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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * Remmina Preferences Dialog</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> */</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"><a class="line" href="struct___remmina_pref_dialog_priv.html"> 43</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05"> 44</a></span>&#160; GtkWidget *<a class="code" href="struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05">resolutions_list</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;} <a class="code" href="remmina__pref__dialog_8h.html#aeba55bfe8ab83707f2e68034061a3dd2">RemminaPrefDialogPriv</a>;</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="struct___remmina_pref_dialog.html"> 47</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876"> 48</a></span>&#160; GtkBuilder * <a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae"> 49</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11"> 50</a></span>&#160; GtkNotebook * <a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>;</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="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123"> 52</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c"> 53</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27"> 54</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571"> 55</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6"> 56</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d"> 57</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b"> 58</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa"> 59</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb"> 60</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97"> 61</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193"> 62</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018"> 63</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3"> 64</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172"> 65</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119"> 66</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87"> 67</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5"> 68</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c"> 69</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f"> 70</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd"> 71</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a"> 72</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061"> 73</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2"> 74</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6"> 75</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d"> 76</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972"> 77</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb"> 78</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008"> 79</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc"> 80</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40"> 81</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32"> 82</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196"> 83</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0"> 84</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7"> 85</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b"> 86</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531"> 87</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de"> 88</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6"> 89</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903"> 90</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903">button_options_resolutions</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c"> 92</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6"> 93</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912"> 94</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a"> 95</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028"> 96</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826"> 98</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2"> 99</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2"> 100</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0"> 101</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8"> 102</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9"> 103</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997"> 104</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97"> 105</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94"> 106</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327"> 107</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be"> 108</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1"> 109</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5"> 110</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46"> 112</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb"> 113</a></span>&#160; GtkFontButton * <a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980"> 114</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d"> 115</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2"> 116</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d"> 117</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4"> 118</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189"> 119</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f"> 120</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74"> 121</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0"> 122</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb"> 123</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714"> 124</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37"> 125</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3"> 126</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c"> 127</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e"> 128</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb"> 129</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab"> 130</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59"> 131</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412"> 132</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c"> 133</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca"> 134</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877"> 135</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811"> 136</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb"> 137</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a"> 138</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f"> 139</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3"> 140</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3"> 141</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c"> 142</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb"> 143</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485"> 144</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a"> 145</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8"> 146</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35"> 147</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c"> 148</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d"> 149</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3"> 150</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6"> 151</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb"> 153</a></span>&#160; <a class="code" href="struct___remmina_pref_dialog_priv.html">RemminaPrefDialogPriv</a> * <a class="code" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">priv</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;} <a class="code" href="remmina__pref__dialog_8h.html#a5318669e14d555b8bd2adc81a54d97b7">RemminaPrefDialog</a>;</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="keyword">enum</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a"> 157</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a">REMMINA_PREF_OPTIONS_TAB</a> = 0,</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb"> 158</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb">REMMINA_PREF_APPEARANCE</a> = 1,</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c"> 159</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c">REMMINA_PREF_APPLET_TAB</a> = 2</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"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;G_BEGIN_DECLS</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;<span class="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458">remmina_pref_dialog_new</a>(gint default_tab, GtkWindow *parent);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">/* Get the current PrefDialog or NULL if not initialized */</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29">remmina_pref_dialog_get_dialog</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8h.html#a19ba9bbbff353b8e36810d423e6f7e8f">remmina_prefdiag_unlock_repwd_on_changed</a>(GtkEditable *editable, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>(GSimpleAction *action, GVariant *param, gpointer data);</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;G_END_DECLS</div><div class="ttc" id="struct___remmina_pref_dialog_html_afccd66623eb7bb1ec233a241e97e80f0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">_RemminaPrefDialog::button_keyboard_select_all</a></div><div class="ttdeci">GtkButton * button_keyboard_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00122">remmina_pref_dialog.h:122</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a95129b25f045ca6f0bc90323b755aebb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">_RemminaPrefDialog::colorbutton_color2</a></div><div class="ttdeci">GtkColorButton * colorbutton_color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00137">remmina_pref_dialog.h:137</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a4b8e7072d5c4b5c8b5e57714130f973d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">_RemminaPrefDialog::colorbutton_color14</a></div><div class="ttdeci">GtkColorButton * colorbutton_color14</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00149">remmina_pref_dialog.h:149</a></div></div>
+<a href="remmina__pref__dialog_8h.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) 2017-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">#pragma once</span></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;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * Remmina Preferences Dialog</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> */</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"><a class="line" href="struct___remmina_pref_dialog_priv.html"> 43</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05"> 44</a></span>&#160; GtkWidget *<a class="code" href="struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05">resolutions_list</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;} <a class="code" href="remmina__pref__dialog_8h.html#aeba55bfe8ab83707f2e68034061a3dd2">RemminaPrefDialogPriv</a>;</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="struct___remmina_pref_dialog.html"> 47</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876"> 48</a></span>&#160; GtkBuilder * <a class="code" href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">builder</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae"> 49</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">dialog</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11"> 50</a></span>&#160; GtkNotebook * <a class="code" href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">notebook_preferences</a>;</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="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123"> 52</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">filechooserbutton_options_datadir_path</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c"> 53</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">entry_options_file_name</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27"> 54</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">filechooserbutton_options_screenshots_path</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571"> 55</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">entry_options_screenshot_name</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6"> 56</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">switch_appearance_grab_color</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d"> 57</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">switch_options_deny_screenshot_clipboard</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b"> 58</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">switch_options_remember_last_view_mode</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa"> 59</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">switch_options_confirm_close</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb"> 60</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">switch_security_use_primary_password</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97"> 61</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">unlock_timeout</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193"> 62</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">switch_security_lock_connect</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018"> 63</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">switch_security_lock_edit</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3"> 64</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">switch_security_audit</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172"> 65</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">switch_security_trust_all</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119"> 66</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">checkbutton_options_save_settings</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87"> 67</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">checkbutton_appearance_fullscreen_on_auto</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5"> 68</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">checkbutton_appearance_show_tabs</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c"> 69</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">checkbutton_appearance_show_notes</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f"> 70</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">checkbutton_appearance_hide_toolbar</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd"> 71</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061"> 72</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2"> 73</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6"> 74</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">comboboxtext_appearance_tab_interface</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d"> 75</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">comboboxtext_options_scale_quality</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972"> 76</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">comboboxtext_options_ssh_loglevel</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb"> 77</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">comboboxtext_appearance_fullscreen_toolbar_visibility</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008"> 78</a></span>&#160; GtkComboBox * <a class="code" href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">comboboxtext_security_enc_method</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc"> 79</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">checkbutton_options_ssh_parseconfig</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40"> 80</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">entry_options_ssh_port</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32"> 81</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">entry_options_ssh_tcp_keepidle</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196"> 82</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">entry_options_ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0"> 83</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">entry_options_ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7"> 84</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">entry_options_ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b"> 85</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">entry_options_scroll</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531"> 86</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">entry_options_recent_items</a>;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de"> 87</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">entry_grab_color</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6"> 88</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">button_options_recent_items_clear</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903"> 89</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903">button_options_resolutions</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c"> 91</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">checkbutton_applet_new_connection_on_top</a>;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6"> 92</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">checkbutton_applet_hide_totals</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912"> 93</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">checkbutton_applet_disable_tray</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a"> 94</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">checkbutton_dark_theme</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028"> 95</a></span>&#160; GtkCheckButton * <a class="code" href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">checkbutton_applet_start_in_tray</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826"> 97</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">button_keyboard_host_key</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2"> 98</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">button_keyboard_fullscreen</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2"> 99</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">button_keyboard_auto_fit</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0"> 100</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">button_keyboard_switch_tab_left</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8"> 101</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">button_keyboard_switch_tab_right</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9"> 102</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">button_keyboard_scaled</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997"> 103</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">button_keyboard_multimon</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97"> 104</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">button_keyboard_grab_keyboard</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94"> 105</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">button_keyboard_screenshot</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327"> 106</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">button_keyboard_viewonly</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be"> 107</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">button_keyboard_minimize</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1"> 108</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">button_keyboard_disconnect</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5"> 109</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">button_keyboard_toolbar</a>;</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"><a class="line" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46"> 111</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">switch_terminal_font_system</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb"> 112</a></span>&#160; GtkFontButton * <a class="code" href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">fontbutton_terminal_font</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980"> 113</a></span>&#160; GtkSwitch * <a class="code" href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">switch_terminal_bold</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d"> 114</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">label_terminal_foreground</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2"> 115</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">colorbutton_foreground</a>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d"> 116</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">label_terminal_background</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4"> 117</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">colorbutton_background</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189"> 118</a></span>&#160; GtkEntry * <a class="code" href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">entry_scrollback_lines</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f"> 119</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">button_keyboard_copy</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74"> 120</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">button_keyboard_paste</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0"> 121</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">button_keyboard_select_all</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb"> 122</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">button_keyboard_increase_font</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714"> 123</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">button_keyboard_decrease_font</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37"> 124</a></span>&#160; GtkButton * <a class="code" href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">button_keyboard_search_text</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3"> 125</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">label_terminal_cursor_color</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c"> 126</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">label_terminal_bold_color</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e"> 127</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">label_terminal_normal_colors</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb"> 128</a></span>&#160; GtkLabel * <a class="code" href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">label_terminal_bright_colors</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab"> 129</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">colorbutton_cursor</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59"> 130</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">colorbutton_cursor_foreground</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412"> 131</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">colorbutton_highlight</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c"> 132</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">colorbutton_highlight_foreground</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca"> 133</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">colorbutton_colorBD</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877"> 134</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">colorbutton_color0</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811"> 135</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">colorbutton_color1</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb"> 136</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">colorbutton_color2</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a"> 137</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">colorbutton_color3</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f"> 138</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">colorbutton_color4</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3"> 139</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">colorbutton_color5</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3"> 140</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">colorbutton_color6</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c"> 141</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">colorbutton_color7</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb"> 142</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">colorbutton_color8</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485"> 143</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">colorbutton_color9</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a"> 144</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">colorbutton_color10</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8"> 145</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">colorbutton_color11</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35"> 146</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">colorbutton_color12</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c"> 147</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">colorbutton_color13</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d"> 148</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">colorbutton_color14</a>;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3"> 149</a></span>&#160; GtkColorButton * <a class="code" href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">colorbutton_color15</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6"> 150</a></span>&#160; GtkFileChooser * <a class="code" href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">button_term_cs</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"><a class="line" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb"> 152</a></span>&#160; <a class="code" href="struct___remmina_pref_dialog_priv.html">RemminaPrefDialogPriv</a> * <a class="code" href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">priv</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;} <a class="code" href="remmina__pref__dialog_8h.html#a5318669e14d555b8bd2adc81a54d97b7">RemminaPrefDialog</a>;</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="keyword">enum</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a"> 156</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a">REMMINA_PREF_OPTIONS_TAB</a> = 0,</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb"> 157</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb">REMMINA_PREF_APPEARANCE</a> = 1,</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c"> 158</a></span>&#160; <a class="code" href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c">REMMINA_PREF_APPLET_TAB</a> = 2</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"> 161</span>&#160;G_BEGIN_DECLS</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="comment">/* RemminaPrefDialog instance */</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458">remmina_pref_dialog_new</a>(gint default_tab, GtkWindow *parent);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">/* Get the current PrefDialog or NULL if not initialized */</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;GtkWidget *<a class="code" href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29">remmina_pref_dialog_get_dialog</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8h.html#a19ba9bbbff353b8e36810d423e6f7e8f">remmina_prefdiag_unlock_repwd_on_changed</a>(GtkEditable *editable, <a class="code" href="struct___remmina_pref_dialog.html">RemminaPrefDialog</a> *dialog);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a>(GSimpleAction *action, GVariant *param, gpointer data);</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_END_DECLS</div><div class="ttc" id="struct___remmina_pref_dialog_html_afccd66623eb7bb1ec233a241e97e80f0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afccd66623eb7bb1ec233a241e97e80f0">_RemminaPrefDialog::button_keyboard_select_all</a></div><div class="ttdeci">GtkButton * button_keyboard_select_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00121">remmina_pref_dialog.h:121</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a95129b25f045ca6f0bc90323b755aebb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a95129b25f045ca6f0bc90323b755aebb">_RemminaPrefDialog::colorbutton_color2</a></div><div class="ttdeci">GtkColorButton * colorbutton_color2</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00136">remmina_pref_dialog.h:136</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4b8e7072d5c4b5c8b5e57714130f973d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4b8e7072d5c4b5c8b5e57714130f973d">_RemminaPrefDialog::colorbutton_color14</a></div><div class="ttdeci">GtkColorButton * colorbutton_color14</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00148">remmina_pref_dialog.h:148</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html_a5318669e14d555b8bd2adc81a54d97b7"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a5318669e14d555b8bd2adc81a54d97b7">RemminaPrefDialog</a></div><div class="ttdeci">struct _RemminaPrefDialog RemminaPrefDialog</div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af23110d5e4595589c47800b5d2d5957c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">_RemminaPrefDialog::colorbutton_highlight_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00133">remmina_pref_dialog.h:133</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a8f34c1336ad9efc4679c6e449bec7a97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">_RemminaPrefDialog::button_keyboard_grab_keyboard</a></div><div class="ttdeci">GtkButton * button_keyboard_grab_keyboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00105">remmina_pref_dialog.h:105</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7af362b8421b6f066d4d9d737a01ebfb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">_RemminaPrefDialog::comboboxtext_appearance_fullscreen_toolbar_visibility</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00078">remmina_pref_dialog.h:78</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8h_html_a73b901ed8ee7e318b512f716065adb29"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00847">remmina_pref_dialog.c:847</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af0b14d180d9dcabf9e79b98094bbae74"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">_RemminaPrefDialog::button_keyboard_paste</a></div><div class="ttdeci">GtkButton * button_keyboard_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00121">remmina_pref_dialog.h:121</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a159eb84f43ce9ed81b92b6e260839af6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">_RemminaPrefDialog::button_options_recent_items_clear</a></div><div class="ttdeci">GtkButton * button_options_recent_items_clear</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00089">remmina_pref_dialog.h:89</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af23110d5e4595589c47800b5d2d5957c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af23110d5e4595589c47800b5d2d5957c">_RemminaPrefDialog::colorbutton_highlight_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00132">remmina_pref_dialog.h:132</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a8f34c1336ad9efc4679c6e449bec7a97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8f34c1336ad9efc4679c6e449bec7a97">_RemminaPrefDialog::button_keyboard_grab_keyboard</a></div><div class="ttdeci">GtkButton * button_keyboard_grab_keyboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00104">remmina_pref_dialog.h:104</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7af362b8421b6f066d4d9d737a01ebfb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7af362b8421b6f066d4d9d737a01ebfb">_RemminaPrefDialog::comboboxtext_appearance_fullscreen_toolbar_visibility</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_fullscreen_toolbar_visibility</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00077">remmina_pref_dialog.h:77</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8h_html_a73b901ed8ee7e318b512f716065adb29"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a73b901ed8ee7e318b512f716065adb29">remmina_pref_dialog_get_dialog</a></div><div class="ttdeci">GtkWidget * remmina_pref_dialog_get_dialog(void)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00840">remmina_pref_dialog.c:840</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af0b14d180d9dcabf9e79b98094bbae74"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af0b14d180d9dcabf9e79b98094bbae74">_RemminaPrefDialog::button_keyboard_paste</a></div><div class="ttdeci">GtkButton * button_keyboard_paste</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00120">remmina_pref_dialog.h:120</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a159eb84f43ce9ed81b92b6e260839af6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a159eb84f43ce9ed81b92b6e260839af6">_RemminaPrefDialog::button_options_recent_items_clear</a></div><div class="ttdeci">GtkButton * button_options_recent_items_clear</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00088">remmina_pref_dialog.h:88</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a6e763bfa2b2c507744f4773cd81f3571"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e763bfa2b2c507744f4773cd81f3571">_RemminaPrefDialog::entry_options_screenshot_name</a></div><div class="ttdeci">GtkEntry * entry_options_screenshot_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00055">remmina_pref_dialog.h:55</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a9d7979bea3b5b1e6d4c0f30be3424ac3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3">_RemminaPrefDialog::switch_security_audit</a></div><div class="ttdeci">GtkSwitch * switch_security_audit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00064">remmina_pref_dialog.h:64</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a5d87faf3df58b2fc1e09a33fd07c4d0c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5d87faf3df58b2fc1e09a33fd07c4d0c">_RemminaPrefDialog::entry_options_file_name</a></div><div class="ttdeci">GtkEntry * entry_options_file_name</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00053">remmina_pref_dialog.h:53</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ad87514b86ed3f9b5980bf6c565343b87"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad87514b86ed3f9b5980bf6c565343b87">_RemminaPrefDialog::checkbutton_appearance_fullscreen_on_auto</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_fullscreen_on_auto</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00067">remmina_pref_dialog.h:67</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a341e052b4a78587530b63975b7edc92d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">_RemminaPrefDialog::label_terminal_foreground</a></div><div class="ttdeci">GtkLabel * label_terminal_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00115">remmina_pref_dialog.h:115</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a341e052b4a78587530b63975b7edc92d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a341e052b4a78587530b63975b7edc92d">_RemminaPrefDialog::label_terminal_foreground</a></div><div class="ttdeci">GtkLabel * label_terminal_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00114">remmina_pref_dialog.h:114</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a91063a718e43d8aa78935f5c3c7eabaa"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa">_RemminaPrefDialog::switch_options_confirm_close</a></div><div class="ttdeci">GtkSwitch * switch_options_confirm_close</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00059">remmina_pref_dialog.h:59</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a33d785a31072bb4ce865ae048cc14fc2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">_RemminaPrefDialog::button_keyboard_fullscreen</a></div><div class="ttdeci">GtkButton * button_keyboard_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00099">remmina_pref_dialog.h:99</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a33d785a31072bb4ce865ae048cc14fc2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a33d785a31072bb4ce865ae048cc14fc2">_RemminaPrefDialog::button_keyboard_fullscreen</a></div><div class="ttdeci">GtkButton * button_keyboard_fullscreen</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00098">remmina_pref_dialog.h:98</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a26ad416987608d6c6f0a98ba9d611119"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a26ad416987608d6c6f0a98ba9d611119">_RemminaPrefDialog::checkbutton_options_save_settings</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_save_settings</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00066">remmina_pref_dialog.h:66</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa8077d5e8254495ddee87c6baafb07a5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">_RemminaPrefDialog::button_keyboard_toolbar</a></div><div class="ttdeci">GtkButton * button_keyboard_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00110">remmina_pref_dialog.h:110</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae6eb4e606ae2e199435754728d723ce1"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">_RemminaPrefDialog::button_keyboard_disconnect</a></div><div class="ttdeci">GtkButton * button_keyboard_disconnect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00109">remmina_pref_dialog.h:109</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a85b8819ff553f86a5ad8f7fd1a7aa531"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">_RemminaPrefDialog::entry_options_recent_items</a></div><div class="ttdeci">GtkEntry * entry_options_recent_items</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00087">remmina_pref_dialog.h:87</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9e7984859dc88bab77503b175fc4d8c7"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">_RemminaPrefDialog::entry_options_ssh_tcp_usrtimeout</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00085">remmina_pref_dialog.h:85</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa8077d5e8254495ddee87c6baafb07a5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa8077d5e8254495ddee87c6baafb07a5">_RemminaPrefDialog::button_keyboard_toolbar</a></div><div class="ttdeci">GtkButton * button_keyboard_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00109">remmina_pref_dialog.h:109</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae6eb4e606ae2e199435754728d723ce1"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae6eb4e606ae2e199435754728d723ce1">_RemminaPrefDialog::button_keyboard_disconnect</a></div><div class="ttdeci">GtkButton * button_keyboard_disconnect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00108">remmina_pref_dialog.h:108</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a85b8819ff553f86a5ad8f7fd1a7aa531"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a85b8819ff553f86a5ad8f7fd1a7aa531">_RemminaPrefDialog::entry_options_recent_items</a></div><div class="ttdeci">GtkEntry * entry_options_recent_items</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00086">remmina_pref_dialog.h:86</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9e7984859dc88bab77503b175fc4d8c7"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9e7984859dc88bab77503b175fc4d8c7">_RemminaPrefDialog::entry_options_ssh_tcp_usrtimeout</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_usrtimeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00084">remmina_pref_dialog.h:84</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html_aeba55bfe8ab83707f2e68034061a3dd2"><div class="ttname"><a href="remmina__pref__dialog_8h.html#aeba55bfe8ab83707f2e68034061a3dd2">RemminaPrefDialogPriv</a></div><div class="ttdeci">struct _RemminaPrefDialogPriv RemminaPrefDialogPriv</div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6a01f6f8247a97a94b8855902a14a980"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">_RemminaPrefDialog::switch_terminal_bold</a></div><div class="ttdeci">GtkSwitch * switch_terminal_bold</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00114">remmina_pref_dialog.h:114</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac63a1e0fdf5f16c8b51fcb640075ed7a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">_RemminaPrefDialog::checkbutton_dark_theme</a></div><div class="ttdeci">GtkCheckButton * checkbutton_dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00095">remmina_pref_dialog.h:95</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9088c8f060e1fe7e12445fb2f9b99bc3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">_RemminaPrefDialog::colorbutton_color6</a></div><div class="ttdeci">GtkColorButton * colorbutton_color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00141">remmina_pref_dialog.h:141</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a62227d6671d78e7387e727c92d79c92e"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">_RemminaPrefDialog::label_terminal_normal_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_normal_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00128">remmina_pref_dialog.h:128</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8h_html_ad54ed89678b180a685af40b6226d1458"><div class="ttname"><a href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458">remmina_pref_dialog_new</a></div><div class="ttdeci">G_BEGIN_DECLS GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00691">remmina_pref_dialog.c:691</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6a01f6f8247a97a94b8855902a14a980"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6a01f6f8247a97a94b8855902a14a980">_RemminaPrefDialog::switch_terminal_bold</a></div><div class="ttdeci">GtkSwitch * switch_terminal_bold</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00113">remmina_pref_dialog.h:113</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac63a1e0fdf5f16c8b51fcb640075ed7a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac63a1e0fdf5f16c8b51fcb640075ed7a">_RemminaPrefDialog::checkbutton_dark_theme</a></div><div class="ttdeci">GtkCheckButton * checkbutton_dark_theme</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00094">remmina_pref_dialog.h:94</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9088c8f060e1fe7e12445fb2f9b99bc3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9088c8f060e1fe7e12445fb2f9b99bc3">_RemminaPrefDialog::colorbutton_color6</a></div><div class="ttdeci">GtkColorButton * colorbutton_color6</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00140">remmina_pref_dialog.h:140</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a62227d6671d78e7387e727c92d79c92e"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a62227d6671d78e7387e727c92d79c92e">_RemminaPrefDialog::label_terminal_normal_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_normal_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00127">remmina_pref_dialog.h:127</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8h_html_ad54ed89678b180a685af40b6226d1458"><div class="ttname"><a href="remmina__pref__dialog_8h.html#ad54ed89678b180a685af40b6226d1458">remmina_pref_dialog_new</a></div><div class="ttdeci">G_BEGIN_DECLS GtkWidget * remmina_pref_dialog_new(gint default_tab, GtkWindow *parent)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00686">remmina_pref_dialog.c:686</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a45f85b81d18d274a220f65e5c8e508eb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a45f85b81d18d274a220f65e5c8e508eb">_RemminaPrefDialog::switch_security_use_primary_password</a></div><div class="ttdeci">GtkSwitch * switch_security_use_primary_password</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00060">remmina_pref_dialog.h:60</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a7ab49071b369069912565f3e0a8b000b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b">_RemminaPrefDialog::switch_options_remember_last_view_mode</a></div><div class="ttdeci">GtkSwitch * switch_options_remember_last_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00058">remmina_pref_dialog.h:58</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af3997f4513793f2b6ba71a54c55c78bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">_RemminaPrefDialog::fontbutton_terminal_font</a></div><div class="ttdeci">GtkFontButton * fontbutton_terminal_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00113">remmina_pref_dialog.h:113</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2ce8a15918b4f58702d1063afbbc5a4a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">_RemminaPrefDialog::colorbutton_color3</a></div><div class="ttdeci">GtkColorButton * colorbutton_color3</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00138">remmina_pref_dialog.h:138</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa63edd53778f0eba2e610690fb8002a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">_RemminaPrefDialog::colorbutton_color15</a></div><div class="ttdeci">GtkColorButton * colorbutton_color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00150">remmina_pref_dialog.h:150</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af3997f4513793f2b6ba71a54c55c78bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3997f4513793f2b6ba71a54c55c78bb">_RemminaPrefDialog::fontbutton_terminal_font</a></div><div class="ttdeci">GtkFontButton * fontbutton_terminal_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00112">remmina_pref_dialog.h:112</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2ce8a15918b4f58702d1063afbbc5a4a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2ce8a15918b4f58702d1063afbbc5a4a">_RemminaPrefDialog::colorbutton_color3</a></div><div class="ttdeci">GtkColorButton * colorbutton_color3</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00137">remmina_pref_dialog.h:137</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa63edd53778f0eba2e610690fb8002a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa63edd53778f0eba2e610690fb8002a3">_RemminaPrefDialog::colorbutton_color15</a></div><div class="ttdeci">GtkColorButton * colorbutton_color15</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00149">remmina_pref_dialog.h:149</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a41f551c6f21f4a448e4c5ec1186240fd"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">_RemminaPrefDialog::checkbutton_appearance_hide_searchbar</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_hide_searchbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00071">remmina_pref_dialog.h:71</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a4c6b01300d82ee50a036fc9fb758cb1f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4c6b01300d82ee50a036fc9fb758cb1f">_RemminaPrefDialog::checkbutton_appearance_hide_toolbar</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_hide_toolbar</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00070">remmina_pref_dialog.h:70</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a285a521c1fb119f9c703d434d9619018"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018">_RemminaPrefDialog::switch_security_lock_edit</a></div><div class="ttdeci">GtkSwitch * switch_security_lock_edit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00063">remmina_pref_dialog.h:63</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1b100c8bbb0b01229b240a035defd45f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">_RemminaPrefDialog::button_keyboard_copy</a></div><div class="ttdeci">GtkButton * button_keyboard_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00120">remmina_pref_dialog.h:120</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2a76560d15a613524e38d22934843196"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">_RemminaPrefDialog::entry_options_ssh_tcp_keepintvl</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00083">remmina_pref_dialog.h:83</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9adb1c6520579cedf59495250a9a6e59"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">_RemminaPrefDialog::colorbutton_cursor_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00131">remmina_pref_dialog.h:131</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a745d3114e3cef2c572b859530926ad40"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">_RemminaPrefDialog::entry_options_ssh_port</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00081">remmina_pref_dialog.h:81</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1b100c8bbb0b01229b240a035defd45f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b100c8bbb0b01229b240a035defd45f">_RemminaPrefDialog::button_keyboard_copy</a></div><div class="ttdeci">GtkButton * button_keyboard_copy</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00119">remmina_pref_dialog.h:119</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2a76560d15a613524e38d22934843196"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2a76560d15a613524e38d22934843196">_RemminaPrefDialog::entry_options_ssh_tcp_keepintvl</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepintvl</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00082">remmina_pref_dialog.h:82</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9adb1c6520579cedf59495250a9a6e59"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9adb1c6520579cedf59495250a9a6e59">_RemminaPrefDialog::colorbutton_cursor_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00130">remmina_pref_dialog.h:130</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a745d3114e3cef2c572b859530926ad40"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a745d3114e3cef2c572b859530926ad40">_RemminaPrefDialog::entry_options_ssh_port</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_port</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00080">remmina_pref_dialog.h:80</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ae766dd561f1bf23723306f7a70015f27"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae766dd561f1bf23723306f7a70015f27">_RemminaPrefDialog::filechooserbutton_options_screenshots_path</a></div><div class="ttdeci">GtkFileChooser * filechooserbutton_options_screenshots_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00054">remmina_pref_dialog.h:54</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6cea3c4860e9889953a6a22c72672d32"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">_RemminaPrefDialog::entry_options_ssh_tcp_keepidle</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00082">remmina_pref_dialog.h:82</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae26ffa1d95468ab0e3a85a22aa074189"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">_RemminaPrefDialog::entry_scrollback_lines</a></div><div class="ttdeci">GtkEntry * entry_scrollback_lines</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00119">remmina_pref_dialog.h:119</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_afa66945e979adc91f4956efb11115a2f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">_RemminaPrefDialog::colorbutton_color4</a></div><div class="ttdeci">GtkColorButton * colorbutton_color4</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00139">remmina_pref_dialog.h:139</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1fe803f4c8b12bcbf86936e657211b37"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">_RemminaPrefDialog::button_keyboard_search_text</a></div><div class="ttdeci">GtkButton * button_keyboard_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00125">remmina_pref_dialog.h:125</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a">REMMINA_PREF_OPTIONS_TAB</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00157">remmina_pref_dialog.h:157</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6e24f37d348137f4ee4fa783180f7b94"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">_RemminaPrefDialog::button_keyboard_screenshot</a></div><div class="ttdeci">GtkButton * button_keyboard_screenshot</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00106">remmina_pref_dialog.h:106</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_af3245723de79398df91fe0e440c0e327"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">_RemminaPrefDialog::button_keyboard_viewonly</a></div><div class="ttdeci">GtkButton * button_keyboard_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00107">remmina_pref_dialog.h:107</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7e7d1f3f754e55464a80fcd8d448c47c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">_RemminaPrefDialog::checkbutton_applet_new_connection_on_top</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_new_connection_on_top</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00092">remmina_pref_dialog.h:92</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac1628fda7c9fc362575002733d4adf46"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">_RemminaPrefDialog::switch_terminal_font_system</a></div><div class="ttdeci">GtkSwitch * switch_terminal_font_system</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00112">remmina_pref_dialog.h:112</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7a61d9daaf87c47c073e474498a1a15c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">_RemminaPrefDialog::colorbutton_color13</a></div><div class="ttdeci">GtkColorButton * colorbutton_color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00148">remmina_pref_dialog.h:148</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6cea3c4860e9889953a6a22c72672d32"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cea3c4860e9889953a6a22c72672d32">_RemminaPrefDialog::entry_options_ssh_tcp_keepidle</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepidle</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00081">remmina_pref_dialog.h:81</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae26ffa1d95468ab0e3a85a22aa074189"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae26ffa1d95468ab0e3a85a22aa074189">_RemminaPrefDialog::entry_scrollback_lines</a></div><div class="ttdeci">GtkEntry * entry_scrollback_lines</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00118">remmina_pref_dialog.h:118</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_afa66945e979adc91f4956efb11115a2f"><div class="ttname"><a href="struct___remmina_pref_dialog.html#afa66945e979adc91f4956efb11115a2f">_RemminaPrefDialog::colorbutton_color4</a></div><div class="ttdeci">GtkColorButton * colorbutton_color4</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00138">remmina_pref_dialog.h:138</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1fe803f4c8b12bcbf86936e657211b37"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1fe803f4c8b12bcbf86936e657211b37">_RemminaPrefDialog::button_keyboard_search_text</a></div><div class="ttdeci">GtkButton * button_keyboard_search_text</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00124">remmina_pref_dialog.h:124</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562a5622b46aa48f22a0c4511f3697e56f4a">REMMINA_PREF_OPTIONS_TAB</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00156">remmina_pref_dialog.h:156</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6e24f37d348137f4ee4fa783180f7b94"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6e24f37d348137f4ee4fa783180f7b94">_RemminaPrefDialog::button_keyboard_screenshot</a></div><div class="ttdeci">GtkButton * button_keyboard_screenshot</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00105">remmina_pref_dialog.h:105</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_af3245723de79398df91fe0e440c0e327"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af3245723de79398df91fe0e440c0e327">_RemminaPrefDialog::button_keyboard_viewonly</a></div><div class="ttdeci">GtkButton * button_keyboard_viewonly</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00106">remmina_pref_dialog.h:106</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7e7d1f3f754e55464a80fcd8d448c47c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7e7d1f3f754e55464a80fcd8d448c47c">_RemminaPrefDialog::checkbutton_applet_new_connection_on_top</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_new_connection_on_top</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00091">remmina_pref_dialog.h:91</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac1628fda7c9fc362575002733d4adf46"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac1628fda7c9fc362575002733d4adf46">_RemminaPrefDialog::switch_terminal_font_system</a></div><div class="ttdeci">GtkSwitch * switch_terminal_font_system</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00111">remmina_pref_dialog.h:111</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7a61d9daaf87c47c073e474498a1a15c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a61d9daaf87c47c073e474498a1a15c">_RemminaPrefDialog::colorbutton_color13</a></div><div class="ttdeci">GtkColorButton * colorbutton_color13</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00147">remmina_pref_dialog.h:147</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_af562e9b1e598fe89613310e090cb3172"><div class="ttname"><a href="struct___remmina_pref_dialog.html#af562e9b1e598fe89613310e090cb3172">_RemminaPrefDialog::switch_security_trust_all</a></div><div class="ttdeci">GtkSwitch * switch_security_trust_all</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00065">remmina_pref_dialog.h:65</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a4f80906dcdf81e03e383e38b8ca568a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">_RemminaPrefDialog::colorbutton_color5</a></div><div class="ttdeci">GtkColorButton * colorbutton_color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00140">remmina_pref_dialog.h:140</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7a269ccc996f2b110e1aa33228ca3db0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">_RemminaPrefDialog::entry_options_ssh_tcp_keepcnt</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00084">remmina_pref_dialog.h:84</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4f80906dcdf81e03e383e38b8ca568a3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4f80906dcdf81e03e383e38b8ca568a3">_RemminaPrefDialog::colorbutton_color5</a></div><div class="ttdeci">GtkColorButton * colorbutton_color5</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00139">remmina_pref_dialog.h:139</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7a269ccc996f2b110e1aa33228ca3db0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7a269ccc996f2b110e1aa33228ca3db0">_RemminaPrefDialog::entry_options_ssh_tcp_keepcnt</a></div><div class="ttdeci">GtkEntry * entry_options_ssh_tcp_keepcnt</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00083">remmina_pref_dialog.h:83</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a07e738aa428d0aa99503058e1c0a5f11"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a07e738aa428d0aa99503058e1c0a5f11">_RemminaPrefDialog::notebook_preferences</a></div><div class="ttdeci">GtkNotebook * notebook_preferences</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00050">remmina_pref_dialog.h:50</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a51d126c252f956a7ab304da158287193"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193">_RemminaPrefDialog::switch_security_lock_connect</a></div><div class="ttdeci">GtkSwitch * switch_security_lock_connect</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00062">remmina_pref_dialog.h:62</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acd24605ed4ae1e05dba2f86857e08008"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">_RemminaPrefDialog::comboboxtext_security_enc_method</a></div><div class="ttdeci">GtkComboBox * comboboxtext_security_enc_method</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00079">remmina_pref_dialog.h:79</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c">REMMINA_PREF_APPLET_TAB</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00159">remmina_pref_dialog.h:159</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a60701897d0219aad48995ab7d2d487de"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">_RemminaPrefDialog::entry_grab_color</a></div><div class="ttdeci">GtkEntry * entry_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00088">remmina_pref_dialog.h:88</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acd24605ed4ae1e05dba2f86857e08008"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd24605ed4ae1e05dba2f86857e08008">_RemminaPrefDialog::comboboxtext_security_enc_method</a></div><div class="ttdeci">GtkComboBox * comboboxtext_security_enc_method</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00078">remmina_pref_dialog.h:78</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab2070bbdfe1e9ee12f43a52556f3130c">REMMINA_PREF_APPLET_TAB</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00158">remmina_pref_dialog.h:158</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a60701897d0219aad48995ab7d2d487de"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a60701897d0219aad48995ab7d2d487de">_RemminaPrefDialog::entry_grab_color</a></div><div class="ttdeci">GtkEntry * entry_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00087">remmina_pref_dialog.h:87</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a0b6b038291c02fd29f2fc6cd04135b97"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a0b6b038291c02fd29f2fc6cd04135b97">_RemminaPrefDialog::unlock_timeout</a></div><div class="ttdeci">GtkEntry * unlock_timeout</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00061">remmina_pref_dialog.h:61</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a7ae48871b7795372a1f084b3ac344714"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">_RemminaPrefDialog::button_keyboard_decrease_font</a></div><div class="ttdeci">GtkButton * button_keyboard_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00124">remmina_pref_dialog.h:124</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a9cd6e07816b16f7f94f55193426af4e0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">_RemminaPrefDialog::button_keyboard_switch_tab_left</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_left</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00101">remmina_pref_dialog.h:101</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a3a830a938ddb7dde8a580e108a7ad028"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">_RemminaPrefDialog::checkbutton_applet_start_in_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_start_in_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00096">remmina_pref_dialog.h:96</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa618b528fc78d3253f0fc2c5ffacbde2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">_RemminaPrefDialog::button_keyboard_auto_fit</a></div><div class="ttdeci">GtkButton * button_keyboard_auto_fit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00100">remmina_pref_dialog.h:100</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a066bf2941261efad64c5942a69a6e33d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">_RemminaPrefDialog::label_terminal_background</a></div><div class="ttdeci">GtkLabel * label_terminal_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00117">remmina_pref_dialog.h:117</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a7ae48871b7795372a1f084b3ac344714"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a7ae48871b7795372a1f084b3ac344714">_RemminaPrefDialog::button_keyboard_decrease_font</a></div><div class="ttdeci">GtkButton * button_keyboard_decrease_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00123">remmina_pref_dialog.h:123</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a9cd6e07816b16f7f94f55193426af4e0"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a9cd6e07816b16f7f94f55193426af4e0">_RemminaPrefDialog::button_keyboard_switch_tab_left</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_left</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00100">remmina_pref_dialog.h:100</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a3a830a938ddb7dde8a580e108a7ad028"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3a830a938ddb7dde8a580e108a7ad028">_RemminaPrefDialog::checkbutton_applet_start_in_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_start_in_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00095">remmina_pref_dialog.h:95</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa618b528fc78d3253f0fc2c5ffacbde2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa618b528fc78d3253f0fc2c5ffacbde2">_RemminaPrefDialog::button_keyboard_auto_fit</a></div><div class="ttdeci">GtkButton * button_keyboard_auto_fit</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00099">remmina_pref_dialog.h:99</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a066bf2941261efad64c5942a69a6e33d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a066bf2941261efad64c5942a69a6e33d">_RemminaPrefDialog::label_terminal_background</a></div><div class="ttdeci">GtkLabel * label_terminal_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00116">remmina_pref_dialog.h:116</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html"><div class="ttname"><a href="struct___remmina_pref_dialog.html">_RemminaPrefDialog</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00047">remmina_pref_dialog.h:47</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a3fe278a66ed7fba91a944df3c60dd7b6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">_RemminaPrefDialog::button_term_cs</a></div><div class="ttdeci">GtkFileChooser * button_term_cs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00151">remmina_pref_dialog.h:151</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a877c22a6809bb846cc6555c4100ef877"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">_RemminaPrefDialog::colorbutton_color0</a></div><div class="ttdeci">GtkColorButton * colorbutton_color0</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00135">remmina_pref_dialog.h:135</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a5e3df5e92bbf0aec0f317216de88681d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">_RemminaPrefDialog::comboboxtext_options_scale_quality</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00076">remmina_pref_dialog.h:76</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ac15ed49a7e4ab8926bf4385737e0382b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">_RemminaPrefDialog::entry_options_scroll</a></div><div class="ttdeci">GtkEntry * entry_options_scroll</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00086">remmina_pref_dialog.h:86</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a3fe278a66ed7fba91a944df3c60dd7b6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a3fe278a66ed7fba91a944df3c60dd7b6">_RemminaPrefDialog::button_term_cs</a></div><div class="ttdeci">GtkFileChooser * button_term_cs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00150">remmina_pref_dialog.h:150</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a877c22a6809bb846cc6555c4100ef877"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a877c22a6809bb846cc6555c4100ef877">_RemminaPrefDialog::colorbutton_color0</a></div><div class="ttdeci">GtkColorButton * colorbutton_color0</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00134">remmina_pref_dialog.h:134</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a5e3df5e92bbf0aec0f317216de88681d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a5e3df5e92bbf0aec0f317216de88681d">_RemminaPrefDialog::comboboxtext_options_scale_quality</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_scale_quality</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00075">remmina_pref_dialog.h:75</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ac15ed49a7e4ab8926bf4385737e0382b"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ac15ed49a7e4ab8926bf4385737e0382b">_RemminaPrefDialog::entry_options_scroll</a></div><div class="ttdeci">GtkEntry * entry_options_scroll</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00085">remmina_pref_dialog.h:85</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a120e306368b8fc06841c2fc2d48778c5"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a120e306368b8fc06841c2fc2d48778c5">_RemminaPrefDialog::checkbutton_appearance_show_tabs</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_show_tabs</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00068">remmina_pref_dialog.h:68</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a956db17e48d1c446df7677d3e9f917e2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">_RemminaPrefDialog::colorbutton_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00116">remmina_pref_dialog.h:116</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a956db17e48d1c446df7677d3e9f917e2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a956db17e48d1c446df7677d3e9f917e2">_RemminaPrefDialog::colorbutton_foreground</a></div><div class="ttdeci">GtkColorButton * colorbutton_foreground</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00115">remmina_pref_dialog.h:115</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_priv_html_ae835f35a6211b2858701e4a3be835f05"><div class="ttname"><a href="struct___remmina_pref_dialog_priv.html#ae835f35a6211b2858701e4a3be835f05">_RemminaPrefDialogPriv::resolutions_list</a></div><div class="ttdeci">GtkWidget * resolutions_list</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00044">remmina_pref_dialog.h:44</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a46e2af690d5d39c6d3ec2c07431d76a8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">_RemminaPrefDialog::colorbutton_color11</a></div><div class="ttdeci">GtkColorButton * colorbutton_color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00146">remmina_pref_dialog.h:146</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6cf1e8aa7d474aacc471b625d6330826"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">_RemminaPrefDialog::button_keyboard_host_key</a></div><div class="ttdeci">GtkButton * button_keyboard_host_key</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00098">remmina_pref_dialog.h:98</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aaaa2467b387e8d92b080dd407d2b3412"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">_RemminaPrefDialog::colorbutton_highlight</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00132">remmina_pref_dialog.h:132</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a4a8bc03207480e0e616794ea5efc71f6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">_RemminaPrefDialog::comboboxtext_appearance_tab_interface</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_tab_interface</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00075">remmina_pref_dialog.h:75</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a46e2af690d5d39c6d3ec2c07431d76a8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a46e2af690d5d39c6d3ec2c07431d76a8">_RemminaPrefDialog::colorbutton_color11</a></div><div class="ttdeci">GtkColorButton * colorbutton_color11</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00145">remmina_pref_dialog.h:145</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6cf1e8aa7d474aacc471b625d6330826"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6cf1e8aa7d474aacc471b625d6330826">_RemminaPrefDialog::button_keyboard_host_key</a></div><div class="ttdeci">GtkButton * button_keyboard_host_key</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00097">remmina_pref_dialog.h:97</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aaaa2467b387e8d92b080dd407d2b3412"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aaaa2467b387e8d92b080dd407d2b3412">_RemminaPrefDialog::colorbutton_highlight</a></div><div class="ttdeci">GtkColorButton * colorbutton_highlight</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00131">remmina_pref_dialog.h:131</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a4a8bc03207480e0e616794ea5efc71f6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a4a8bc03207480e0e616794ea5efc71f6">_RemminaPrefDialog::comboboxtext_appearance_tab_interface</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_tab_interface</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00074">remmina_pref_dialog.h:74</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a73952b074a100371c33fe603f3603c9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a73952b074a100371c33fe603f3603c9c">_RemminaPrefDialog::checkbutton_appearance_show_notes</a></div><div class="ttdeci">GtkCheckButton * checkbutton_appearance_show_notes</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00069">remmina_pref_dialog.h:69</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acaf49bcad1a8975b1ab0de2c241ff912"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">_RemminaPrefDialog::checkbutton_applet_disable_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_disable_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00094">remmina_pref_dialog.h:94</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a517186be14ab61d72d6212592b958972"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">_RemminaPrefDialog::comboboxtext_options_ssh_loglevel</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_ssh_loglevel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00077">remmina_pref_dialog.h:77</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acaf49bcad1a8975b1ab0de2c241ff912"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acaf49bcad1a8975b1ab0de2c241ff912">_RemminaPrefDialog::checkbutton_applet_disable_tray</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_disable_tray</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00093">remmina_pref_dialog.h:93</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a517186be14ab61d72d6212592b958972"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a517186be14ab61d72d6212592b958972">_RemminaPrefDialog::comboboxtext_options_ssh_loglevel</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_ssh_loglevel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00076">remmina_pref_dialog.h:76</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a597cc3d6e631babe57df7a472cbb2876"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876">_RemminaPrefDialog::builder</a></div><div class="ttdeci">GtkBuilder * builder</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00048">remmina_pref_dialog.h:48</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_priv_html"><div class="ttname"><a href="struct___remmina_pref_dialog_priv.html">_RemminaPrefDialogPriv</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00043">remmina_pref_dialog.h:43</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a16f07e2dad152f37ebbabdba18346ff3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">_RemminaPrefDialog::label_terminal_cursor_color</a></div><div class="ttdeci">GtkLabel * label_terminal_cursor_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00126">remmina_pref_dialog.h:126</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a16f07e2dad152f37ebbabdba18346ff3"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a16f07e2dad152f37ebbabdba18346ff3">_RemminaPrefDialog::label_terminal_cursor_color</a></div><div class="ttdeci">GtkLabel * label_terminal_cursor_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00125">remmina_pref_dialog.h:125</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html_a722371d3ad01079279d5e86d7c8400e1"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a722371d3ad01079279d5e86d7c8400e1">remmina_pref_dialog_on_action_close</a></div><div class="ttdeci">void remmina_pref_dialog_on_action_close(GSimpleAction *action, GVariant *param, gpointer data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8c_source.html#l00203">remmina_pref_dialog.c:203</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a387518a27e83993284e7fef26c77863c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">_RemminaPrefDialog::label_terminal_bold_color</a></div><div class="ttdeci">GtkLabel * label_terminal_bold_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00127">remmina_pref_dialog.h:127</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6fb085d3efced0a38d3d7d38e1eb5903"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903">_RemminaPrefDialog::button_options_resolutions</a></div><div class="ttdeci">GtkButton * button_options_resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00090">remmina_pref_dialog.h:90</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a2439e77fa90db834ee0ab308081d3997"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">_RemminaPrefDialog::button_keyboard_multimon</a></div><div class="ttdeci">GtkButton * button_keyboard_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00104">remmina_pref_dialog.h:104</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a387518a27e83993284e7fef26c77863c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a387518a27e83993284e7fef26c77863c">_RemminaPrefDialog::label_terminal_bold_color</a></div><div class="ttdeci">GtkLabel * label_terminal_bold_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00126">remmina_pref_dialog.h:126</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6fb085d3efced0a38d3d7d38e1eb5903"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6fb085d3efced0a38d3d7d38e1eb5903">_RemminaPrefDialog::button_options_resolutions</a></div><div class="ttdeci">GtkButton * button_options_resolutions</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00089">remmina_pref_dialog.h:89</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a2439e77fa90db834ee0ab308081d3997"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2439e77fa90db834ee0ab308081d3997">_RemminaPrefDialog::button_keyboard_multimon</a></div><div class="ttdeci">GtkButton * button_keyboard_multimon</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00103">remmina_pref_dialog.h:103</a></div></div>
<div class="ttc" id="remmina__pref__dialog_8h_html_a19ba9bbbff353b8e36810d423e6f7e8f"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a19ba9bbbff353b8e36810d423e6f7e8f">remmina_prefdiag_unlock_repwd_on_changed</a></div><div class="ttdeci">void remmina_prefdiag_unlock_repwd_on_changed(GtkEditable *editable, RemminaPrefDialog *dialog)</div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_acd1612fbf90b34179cac773ed8f3bdca"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">_RemminaPrefDialog::colorbutton_colorBD</a></div><div class="ttdeci">GtkColorButton * colorbutton_colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00134">remmina_pref_dialog.h:134</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a86e2ecb7e448ef661c2857de7b724061"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">_RemminaPrefDialog::comboboxtext_options_double_click</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_double_click</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00073">remmina_pref_dialog.h:73</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1138eed66b8fe0a2386ee07ec33557be"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">_RemminaPrefDialog::button_keyboard_minimize</a></div><div class="ttdeci">GtkButton * button_keyboard_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00108">remmina_pref_dialog.h:108</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aad290cb37b80d5295452ad1fd4322acc"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">_RemminaPrefDialog::checkbutton_options_ssh_parseconfig</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00080">remmina_pref_dialog.h:80</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_acd1612fbf90b34179cac773ed8f3bdca"><div class="ttname"><a href="struct___remmina_pref_dialog.html#acd1612fbf90b34179cac773ed8f3bdca">_RemminaPrefDialog::colorbutton_colorBD</a></div><div class="ttdeci">GtkColorButton * colorbutton_colorBD</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00133">remmina_pref_dialog.h:133</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a86e2ecb7e448ef661c2857de7b724061"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">_RemminaPrefDialog::comboboxtext_options_double_click</a></div><div class="ttdeci">GtkComboBox * comboboxtext_options_double_click</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00072">remmina_pref_dialog.h:72</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1138eed66b8fe0a2386ee07ec33557be"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1138eed66b8fe0a2386ee07ec33557be">_RemminaPrefDialog::button_keyboard_minimize</a></div><div class="ttdeci">GtkButton * button_keyboard_minimize</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00107">remmina_pref_dialog.h:107</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aad290cb37b80d5295452ad1fd4322acc"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aad290cb37b80d5295452ad1fd4322acc">_RemminaPrefDialog::checkbutton_options_ssh_parseconfig</a></div><div class="ttdeci">GtkCheckButton * checkbutton_options_ssh_parseconfig</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00079">remmina_pref_dialog.h:79</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a20eb324fa74f18cd063289197e72deae"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae">_RemminaPrefDialog::dialog</a></div><div class="ttdeci">GtkWidget * dialog</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00049">remmina_pref_dialog.h:49</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ad92dc760283fa996f40a976bcc3f3d2d"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d">_RemminaPrefDialog::switch_options_deny_screenshot_clipboard</a></div><div class="ttdeci">GtkSwitch * switch_options_deny_screenshot_clipboard</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00057">remmina_pref_dialog.h:57</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa6e591a542ea2a29a5a00e2bf411d2c6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">_RemminaPrefDialog::checkbutton_applet_hide_totals</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_hide_totals</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00093">remmina_pref_dialog.h:93</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ad9ea2466137b35ccef6896126954bc1a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">_RemminaPrefDialog::colorbutton_color10</a></div><div class="ttdeci">GtkColorButton * colorbutton_color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00145">remmina_pref_dialog.h:145</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aa3278e52c1e387ab37a6c384f83ad03a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">_RemminaPrefDialog::switch_permit_news</a></div><div class="ttdeci">GtkSwitch * switch_permit_news</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00072">remmina_pref_dialog.h:72</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_ae2c902d8ab3e2cb84eaec25d597afac8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">_RemminaPrefDialog::button_keyboard_switch_tab_right</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_right</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00102">remmina_pref_dialog.h:102</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a917c214ab0662ebd06db3eb7f7c47bf2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">_RemminaPrefDialog::comboboxtext_appearance_view_mode</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00074">remmina_pref_dialog.h:74</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a01a51aec4952690a078cb108098adbeb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">_RemminaPrefDialog::button_keyboard_increase_font</a></div><div class="ttdeci">GtkButton * button_keyboard_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00123">remmina_pref_dialog.h:123</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adc48fc8abfc2c8e06fea5d42d9790ec9"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">_RemminaPrefDialog::button_keyboard_scaled</a></div><div class="ttdeci">GtkButton * button_keyboard_scaled</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00103">remmina_pref_dialog.h:103</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a1b6e2744506a9e396d8cbae0529356bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">_RemminaPrefDialog::colorbutton_color8</a></div><div class="ttdeci">GtkColorButton * colorbutton_color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00143">remmina_pref_dialog.h:143</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adda92d5335d281571b58a40f3ebe95d4"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">_RemminaPrefDialog::colorbutton_background</a></div><div class="ttdeci">GtkColorButton * colorbutton_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00118">remmina_pref_dialog.h:118</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a6bf0904ad661465e2a522b7dced372ab"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">_RemminaPrefDialog::colorbutton_cursor</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00130">remmina_pref_dialog.h:130</a></div></div>
-<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb">REMMINA_PREF_APPEARANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00158">remmina_pref_dialog.h:158</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_adf1125853e83c16e1ce9704c761d7b9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">_RemminaPrefDialog::colorbutton_color7</a></div><div class="ttdeci">GtkColorButton * colorbutton_color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00142">remmina_pref_dialog.h:142</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a270f2b3596d5f836b0db47b21b049fcb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">_RemminaPrefDialog::priv</a></div><div class="ttdeci">RemminaPrefDialogPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00153">remmina_pref_dialog.h:153</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a280cb6d6e959c7e395a887defde7a485"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">_RemminaPrefDialog::colorbutton_color9</a></div><div class="ttdeci">GtkColorButton * colorbutton_color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00144">remmina_pref_dialog.h:144</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_aca3d7c47a24dc2722496670937a57cbb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">_RemminaPrefDialog::label_terminal_bright_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_bright_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00129">remmina_pref_dialog.h:129</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aa6e591a542ea2a29a5a00e2bf411d2c6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aa6e591a542ea2a29a5a00e2bf411d2c6">_RemminaPrefDialog::checkbutton_applet_hide_totals</a></div><div class="ttdeci">GtkCheckButton * checkbutton_applet_hide_totals</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00092">remmina_pref_dialog.h:92</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ad9ea2466137b35ccef6896126954bc1a"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ad9ea2466137b35ccef6896126954bc1a">_RemminaPrefDialog::colorbutton_color10</a></div><div class="ttdeci">GtkColorButton * colorbutton_color10</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00144">remmina_pref_dialog.h:144</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_ae2c902d8ab3e2cb84eaec25d597afac8"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ae2c902d8ab3e2cb84eaec25d597afac8">_RemminaPrefDialog::button_keyboard_switch_tab_right</a></div><div class="ttdeci">GtkButton * button_keyboard_switch_tab_right</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00101">remmina_pref_dialog.h:101</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a917c214ab0662ebd06db3eb7f7c47bf2"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">_RemminaPrefDialog::comboboxtext_appearance_view_mode</a></div><div class="ttdeci">GtkComboBox * comboboxtext_appearance_view_mode</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00073">remmina_pref_dialog.h:73</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a01a51aec4952690a078cb108098adbeb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a01a51aec4952690a078cb108098adbeb">_RemminaPrefDialog::button_keyboard_increase_font</a></div><div class="ttdeci">GtkButton * button_keyboard_increase_font</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00122">remmina_pref_dialog.h:122</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adc48fc8abfc2c8e06fea5d42d9790ec9"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adc48fc8abfc2c8e06fea5d42d9790ec9">_RemminaPrefDialog::button_keyboard_scaled</a></div><div class="ttdeci">GtkButton * button_keyboard_scaled</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00102">remmina_pref_dialog.h:102</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a1b6e2744506a9e396d8cbae0529356bb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a1b6e2744506a9e396d8cbae0529356bb">_RemminaPrefDialog::colorbutton_color8</a></div><div class="ttdeci">GtkColorButton * colorbutton_color8</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00142">remmina_pref_dialog.h:142</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adda92d5335d281571b58a40f3ebe95d4"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adda92d5335d281571b58a40f3ebe95d4">_RemminaPrefDialog::colorbutton_background</a></div><div class="ttdeci">GtkColorButton * colorbutton_background</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00117">remmina_pref_dialog.h:117</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a6bf0904ad661465e2a522b7dced372ab"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a6bf0904ad661465e2a522b7dced372ab">_RemminaPrefDialog::colorbutton_cursor</a></div><div class="ttdeci">GtkColorButton * colorbutton_cursor</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00129">remmina_pref_dialog.h:129</a></div></div>
+<div class="ttc" id="remmina__pref__dialog_8h_html_a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb"><div class="ttname"><a href="remmina__pref__dialog_8h.html#a1f9aebf1de3ebbf4283a4dcf73308562ab813650ab0842f29fc9dcf865a2285cb">REMMINA_PREF_APPEARANCE</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00157">remmina_pref_dialog.h:157</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_adf1125853e83c16e1ce9704c761d7b9c"><div class="ttname"><a href="struct___remmina_pref_dialog.html#adf1125853e83c16e1ce9704c761d7b9c">_RemminaPrefDialog::colorbutton_color7</a></div><div class="ttdeci">GtkColorButton * colorbutton_color7</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00141">remmina_pref_dialog.h:141</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a270f2b3596d5f836b0db47b21b049fcb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a270f2b3596d5f836b0db47b21b049fcb">_RemminaPrefDialog::priv</a></div><div class="ttdeci">RemminaPrefDialogPriv * priv</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00152">remmina_pref_dialog.h:152</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a280cb6d6e959c7e395a887defde7a485"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a280cb6d6e959c7e395a887defde7a485">_RemminaPrefDialog::colorbutton_color9</a></div><div class="ttdeci">GtkColorButton * colorbutton_color9</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00143">remmina_pref_dialog.h:143</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_aca3d7c47a24dc2722496670937a57cbb"><div class="ttname"><a href="struct___remmina_pref_dialog.html#aca3d7c47a24dc2722496670937a57cbb">_RemminaPrefDialog::label_terminal_bright_colors</a></div><div class="ttdeci">GtkLabel * label_terminal_bright_colors</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00128">remmina_pref_dialog.h:128</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_a2359237c0255ff8f32d5c7590fad1fd6"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a2359237c0255ff8f32d5c7590fad1fd6">_RemminaPrefDialog::switch_appearance_grab_color</a></div><div class="ttdeci">GtkSwitch * switch_appearance_grab_color</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00056">remmina_pref_dialog.h:56</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a995f847743fb828f3400559cea4fff35"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">_RemminaPrefDialog::colorbutton_color12</a></div><div class="ttdeci">GtkColorButton * colorbutton_color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00147">remmina_pref_dialog.h:147</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a995f847743fb828f3400559cea4fff35"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a995f847743fb828f3400559cea4fff35">_RemminaPrefDialog::colorbutton_color12</a></div><div class="ttdeci">GtkColorButton * colorbutton_color12</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00146">remmina_pref_dialog.h:146</a></div></div>
<div class="ttc" id="struct___remmina_pref_dialog_html_ab4c71aaab278901ae411d68abf97a123"><div class="ttname"><a href="struct___remmina_pref_dialog.html#ab4c71aaab278901ae411d68abf97a123">_RemminaPrefDialog::filechooserbutton_options_datadir_path</a></div><div class="ttdeci">GtkFileChooser * filechooserbutton_options_datadir_path</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00052">remmina_pref_dialog.h:52</a></div></div>
-<div class="ttc" id="struct___remmina_pref_dialog_html_a8d88c38e27116711851bfb573e90b811"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">_RemminaPrefDialog::colorbutton_color1</a></div><div class="ttdeci">GtkColorButton * colorbutton_color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00136">remmina_pref_dialog.h:136</a></div></div>
+<div class="ttc" id="struct___remmina_pref_dialog_html_a8d88c38e27116711851bfb573e90b811"><div class="ttname"><a href="struct___remmina_pref_dialog.html#a8d88c38e27116711851bfb573e90b811">_RemminaPrefDialog::colorbutton_color1</a></div><div class="ttdeci">GtkColorButton * colorbutton_color1</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref__dialog_8h_source.html#l00135">remmina_pref_dialog.h:135</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
diff --git a/public/remmina__protocol__widget_8c_source.html b/public/remmina__protocol__widget_8c_source.html
index 2f2359d01..6060b1585 100644
--- a/public/remmina__protocol__widget_8c_source.html
+++ b/public/remmina__protocol__widget_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="title">remmina_protocol_widget.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__protocol__widget_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;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;stdlib.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__chat__window_8h.html">remmina_chat_window.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__masterthread__exec_8h.html">remmina_masterthread_exec.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__ext__exec_8h.html">remmina_ext_exec.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__plugin__manager_8h.html">remmina_plugin_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__pref_8h.html">remmina_pref.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__protocol__widget_8h.html">remmina_protocol_widget.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="remmina__public_8h.html">remmina_public.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__ssh_8h.html">remmina_ssh.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__log_8h.html">remmina_log.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__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></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;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> {</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec"> 61</a></span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d"> 63</a></span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380"> 66</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533"> 67</a></span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c"> 68</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d"> 70</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * the 1st one is the &quot;main&quot; tunnel, other tunnels are used for example in sftp commands */</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116"> 74</a></span>&#160; GPtrArray * <a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211"> 75</a></span>&#160; <a class="code" href="types_8h.html#a1ace68e95e55a30fcf8b991f52332501">RemminaTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</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="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e"> 77</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6"> 79</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326"> 81</a></span>&#160; <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10"> 83</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca"> 84</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46"> 85</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"> 87</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640"> 88</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b"> 89</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</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">/* Data saved from the last message_panel when the user confirm */</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885"> 92</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7"> 93</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791"> 95</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e"> 97</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4"> 98</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05"> 99</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0"> 100</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</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"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 103</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> {</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"> 104</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>,</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"> 105</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>,</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"> 106</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></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__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 109</a></span>&#160;<a class="code" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</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;<span class="keyword">enum</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; CONNECT_SIGNAL,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; DISCONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></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;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html"> 121</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a> {</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a"> 122</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">gp</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada"> 123</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">signal_name</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;} <a class="code" href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a>;</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"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 126</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a>] =</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{ 0 };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 129</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a>(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a> *klass)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;connect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, connect), NULL, NULL,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;disconnect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, disconnect), NULL, NULL,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;desktop-resize&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>), NULL, NULL,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;update-align&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>), NULL, NULL,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;lock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;unlock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 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="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 153</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">int</span> i;</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;LibSSH support turned off, no need to free SSH tunnel data&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></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; g_ptr_array_set_size(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, 0);</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;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 171</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</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"> 173</span>&#160; TRACE_CALL(__func__);</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = NULL;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = 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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = NULL;</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(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = NULL;</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; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</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">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; g_ptr_array_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, TRUE);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = NULL;</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;}</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__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; GtkWidget *child;</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; child = gtk_bin_get_child(GTK_BIN(gp));</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; <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gtk_widget_grab_focus(child);</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;}</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"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 229</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> *priv;</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; priv = g_new0(<a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>, 1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = priv;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = g_ptr_array_new();</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_signal_connect(G_OBJECT(gp), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>), NULL);</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="l00242"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 242</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gpointer data)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening connection&quot;</span>);</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; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; gint num_plugin;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; gint num_ssh;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = FALSE;</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; plugin = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a>(gp);</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; <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; num_plugin++, feature++) {</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;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; num_ssh = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; num_ssh += 2;</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">#endif</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = g_new0(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>, num_plugin + num_ssh + 1);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memcpy(feature, plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>, <span class="keyword">sizeof</span>(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>) * num_plugin);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; feature += num_plugin;</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="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Have SSH&quot;</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SSH;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Connect via SSH from a new terminal&quot;</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;utilities-terminal&quot;</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; feature++;</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; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SFTP;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Open SFTP transfer…&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;folder-remote&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; feature++;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</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; <span class="keywordflow">if</span> (!plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>(gp))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</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;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 308</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cbdata;</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; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</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"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 315</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; gchar *s;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; RemminaMessagePanel *mp;</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; <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Executing external commands…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for the connection profile name</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; s = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s”…&quot;</span>), (name ? name : <span class="stringliteral">&quot;*&quot;</span>));</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; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>, gp);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; g_free(s);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = mp;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gp);</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"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 343</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">/* Notify listeners (usually rcw) that the connection is closed */</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 359</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Plugin told us that it closed the connection,</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>, (gpointer)gp);</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"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 368</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = NULL;</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;connect&quot;</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 391</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Plugin told us that it opened the connection,</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 399</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;update-align&quot;</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 408</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>, (gpointer)gp);</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"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 415</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;lock-dynres&quot;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 424</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;unlock-dynres&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 433</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 440</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 447</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>(gpointer data)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;desktop-resize&quot;</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 456</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></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; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>, (gpointer)gp);</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"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 464</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; <span class="comment">/* kindly ask the protocol plugin to close the connection.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * Nothing else is done here. */</span></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; <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</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;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">/* Connection is already closed by the plugin, but</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment"> * rcw is asking to close again (usually after an error panel)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">/* Clear the current error, or &quot;disconnect&quot; signal func will reshow a panel */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="comment"> * The plugin will emit a &quot;disconnect&quot; signal on gp to call our</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2">close_connection</a>(gp);</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; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 499</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a> ? TRUE : FALSE;</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="l00507"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 507</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</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 *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">&quot;keystrokes&quot;</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; guint *keyvals;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gint i;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; gunichar character;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; guint keyval;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gint n_keys;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; gchar * search;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; gchar * replace;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; guint keyval;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; KeystrokeReplace keystrokes_replaces[] =</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; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; };</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; <span class="comment">/* Keystrokes can only be sent to plugins that accepts them */</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes before replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; keystrokes = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(keystrokes,</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; keystrokes_replaces[i].search,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; keystrokes_replaces[i].replace));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes after replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</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; gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; character = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; g_warning(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">continue</span>;</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="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; n_keys = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; g_free(keys);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</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; g_free(keyvals);</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; g_free(keystrokes);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 598</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>(GtkClipboard *clipboard, <span class="keyword">const</span> gchar *clip_text, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; gchar *text = g_utf8_normalize(clip_text, -1, G_NORMALIZE_DEFAULT_COMPOSE);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; guint *keyvals;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; gint i;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gunichar character;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; guint keyval;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gint n_keys;</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; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; gchar * search;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gchar * replace;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; guint keyval;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; KeystrokeReplace text_replaces[] =</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; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; { NULL, NULL, 0 }</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;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard before replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; text = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(text,</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; text_replaces[i].search,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; text_replaces[i].replace));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard after replacement is \&#39;%s\&#39;&quot;</span>, text);</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; gchar *iter = g_strdup(text);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Iter: %s&quot;</span>, iter),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Char: U+%04&quot;</span> G_GINT32_FORMAT<span class="stringliteral">&quot;X&quot;</span>, character);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Special Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; character = 0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</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; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; n_keys = 0;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * In some cases, for example sending \t as the only sequence</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; g_free(keys);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; g_free(text);</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>;</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"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 694</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; GtkClipboard *clipboard;</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; clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</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; <span class="comment">/* Request the contents of the clipboard, contents_received will be</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>, gp);</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;</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 708</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;{</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;plugin screenshot function is not implemented, using core Remmina functionality&quot;</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>(gp, rpsd);</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__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 719</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Map plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> FALSE;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin mapping function&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>(gp);</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;</div><div class="line"><a name="l00731"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 731</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;{</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unmap plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l00739"></a><span class="lineno"> 739</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin unmapping function&quot;</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57">unmap_event</a>(gp);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 743</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name)</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; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Emitting signals should be used from the object itself, not from another object&quot;</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</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="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</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="l00754"></a><span class="lineno"> 754</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_EMIT_SIGNAL;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</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#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name = signal_name;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</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#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp = gp;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</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="l00758"></a><span class="lineno"> 758</span>&#160; g_free(d);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">return</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; g_signal_emit_by_name(G_OBJECT(gp), signal_name);</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"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 764</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</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;</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 770</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &amp;&amp;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 787</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de">query_feature</a>(gp, feature);</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__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 793</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>)</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="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</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; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type &amp;&amp; (<span class="keywordtype">id</span> == 0 || feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> == <span class="keywordtype">id</span>)) {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(gp, feature);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</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"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 806</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SSH&quot;</span>), NULL,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SFTP&quot;</span>), NULL,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1">call_feature</a>(gp, feature);</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__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 835</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, FALSE);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 843</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;{</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, TRUE);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> FALSE;</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"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 852</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>), gp);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>), gp);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 859</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a> = func;</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;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 865</a></span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data)</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"> 867</span>&#160; RemminaMessagePanel *mp;</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; <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="l00870"></a><span class="lineno"> 870</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</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="l00873"></a><span class="lineno"> 873</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPPROGRESS;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</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>.cnnobj = cnnobj;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</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>.message = msg;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</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 = response_callback;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</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_data = response_callback_data;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</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="l00879"></a><span class="lineno"> 879</span>&#160; mp = 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;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; g_free(d);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</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; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, msg, response_callback, response_callback_data);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 890</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</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="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</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="l00896"></a><span class="lineno"> 896</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPDESTROY;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</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#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</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#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp = mp;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</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="l00900"></a><span class="lineno"> 900</span>&#160; g_free(d);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(cnnobj, mp);</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227"> 907</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling an opening tunnel is not implemented\n&quot;</span>);</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;</div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 912</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; gint ret;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; gchar *msg;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; gboolean partial = FALSE;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; gboolean cont = FALSE;</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; tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Creating SSH tunnel to “%s” via SSH…&quot;</span>, REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), REMMINA_SSH(tunnel)-&gt;server);</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; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>, NULL);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; g_free(msg);</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;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Tunnel init session error: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">break</span>;</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; }</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; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication success&quot;</span>);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>:</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Continue with the next auth method&quot;</span>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; partial = TRUE;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>:</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Reconnecting…&quot;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>) {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; ssh_disconnect(REMMINA_SSH(tunnel)-&gt;<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; ssh_free(REMMINA_SSH(tunnel)-&gt;<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; REMMINA_SSH(tunnel)-&gt;session = NULL;</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_free(REMMINA_SSH(tunnel)-&gt;callback);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>:</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Interrupted by the user&quot;</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Error during the authentication: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</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;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; cont = TRUE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">break</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;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="preprocessor">#if 0</span></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; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot init SSH session with tunnel struct&quot;</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>)</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="preprocessor">#endif</span></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;BREAK:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> NULL;</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <span class="keywordflow">return</span> tunnel;</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3"> 1016</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_direct_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1021</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;{</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; guint idx = 0;</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="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; gboolean found = g_ptr_array_find(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &amp;idx);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; gboolean found = FALSE;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i] == tunnel) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; found = TRUE;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; idx = i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; printf(<span class="stringliteral">&quot;Tunnel %s found at idx = %d\n&quot;</span>, found ? <span class="stringliteral">&quot;yes&quot;</span>: <span class="stringliteral">&quot;not&quot;</span>, idx);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;[Tunnel with idx %u has been disconnected&quot;</span>, idx);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; g_ptr_array_remove(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</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; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1057</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; gint srv_port, ssh_tunnel_port = 0;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel initialization…&quot;</span>);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</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; <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">&quot;&quot;</span>);</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; <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">&quot;unix:///&quot;</span>) != NULL) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s is a UNIX socket&quot;</span>, server);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> g_strdup(server);</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"> 1078</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port (tunnel)&quot;</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server: %s, port: %d&quot;</span>, srv_host, srv_port);</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; <span class="keywordflow">if</span> (port_plus &amp;&amp; srv_port &lt; 100)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">/* Protocols like VNC supports using instance number :0, :1, etc. as port number. */</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; srv_port += default_port;</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"> 1088</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; gchar *msg;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> dest;</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;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;remmina_protocol_widget_init_tunnel failed with error is %s&quot;</span>,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(gp));</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), server);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; g_free(msg);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, FALSE)) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; ssh_tunnel_host = NULL;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; srv_host = g_strdup(<span class="stringliteral">&quot;127.0.0.1&quot;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Starting tunnel to: %s, port: %d&quot;</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(tunnel, srv_host, srv_port, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>)) {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a> = (gpointer)gp;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;127.0.0.1:%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="preprocessor">#else</span></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"> 1143</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> dest;</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;}</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac"> 1152</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_reverse_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1159</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port)</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; gchar *msg;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp)))</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a TCP port number.</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Awaiting incoming SSH connection on port %i…&quot;</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0));</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; g_free(msg);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(tunnel, <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0), local_port)) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> FALSE;</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> TRUE;</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__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1190</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...)</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; ssh_channel channel;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; gint status;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; gchar *cmd, *ptr;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; va_list args;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</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"> 1206</span>&#160; if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)-&gt;<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>)) == NULL)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; va_end(args);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &amp;&amp;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; ptr = strchr(cmd, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; ret = TRUE;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path.</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; _(<span class="stringliteral">&quot;The “%s” command is not available on the SSH server.&quot;</span>), cmd);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path. “%i” is a placeholder for an error code number.</span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; _(<span class="stringliteral">&quot;Could not run the “%s” command on the SSH server (status = %i).&quot;</span>), cmd, status);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">break</span>;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; ret = TRUE;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">// TRANSLATORS: %s is a placeholder for an error message</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not run command. %s&quot;</span>));</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"> 1242</span>&#160; g_free(cmd);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">return</span> FALSE;</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"> 1252</span>&#160;<span class="preprocessor">#endif</span></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;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01256"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736"> 1256</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;{</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; gchar *server;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; gint port;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; gboolean ret;</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"> 1264</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 177, &amp;server, &amp;port);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)(gp,</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : server), port);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; g_free(server);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">return</span> ret;</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"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1273</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;{</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;}</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1279</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;error)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>, gp);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;}</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01292"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9"> 1292</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;{</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an XPort connection is not implemented\n&quot;</span>);</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="preprocessor">#endif</span></div><div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4"> 1297</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;{</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; gboolean bindlocalhost;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; gchar *server;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; gchar *msg;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a hostname or IP address.</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to %s via SSH…&quot;</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>, NULL);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; g_free(msg);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = gp;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 0, &amp;server, NULL);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)-&gt;server, server) == 0);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; g_free(server);</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; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(tunnel, bindlocalhost)) {</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;Could not open channel, %s&quot;</span>,</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; ssh_get_error(REMMINA_SSH(tunnel)-&gt;<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</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; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="preprocessor">#endif</span></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;</div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1342</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display)</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;{</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; if (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">&quot;unix:%i&quot;</span>, display);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#endif</span></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__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1355</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Returns the width of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</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"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1362</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;{</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, -1);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Multi monitor is set to %d&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</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;</div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1371</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;{</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="comment">/* Returns the height of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1378</a></span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;{</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">return</span> gp ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a> : NULL : NULL;</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"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1384</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;{</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;}</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1390</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;{</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;}</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;</div><div class="line"><a name="l01396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1396</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;}</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1402</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>)</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;{</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;}</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1408</a></span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;{</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</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;</div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>)</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"> 1416</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;}</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1420</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</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;</div><div class="line"><a name="l01426"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1426</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand)</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;{</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = expand;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1433</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1439</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;{</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;}</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1445</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;{</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; va_list args;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = FALSE;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; va_end(args);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = TRUE;</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;</div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1465</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;{</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;}</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1471</a></span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</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;</div><div class="line"><a name="l01477"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html"> 1477</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> {</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="comment">/* Input data */</span></div><div class="line"><a name="l01479"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a"> 1479</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74"> 1480</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>;</div><div class="line"><a name="l01481"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28"> 1481</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>;</div><div class="line"><a name="l01482"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850"> 1482</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>;</div><div class="line"><a name="l01483"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361"> 1483</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>;</div><div class="line"><a name="l01484"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544"> 1484</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>;</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7"> 1485</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8"> 1486</a></span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01487"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f"> 1487</a></span>&#160; gboolean <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="comment">/* Running status */</span></div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf"> 1489</a></span>&#160; pthread_mutex_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>;</div><div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda"> 1490</a></span>&#160; pthread_cond_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="comment">/* Output/retval */</span></div><div class="line"><a name="l01492"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5"> 1492</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;};</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1495</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>(<span class="keywordtype">void</span> *user_data, <span class="keywordtype">int</span> button)</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;{</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a> = button;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a> = <a class="code" href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</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;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>) {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Hide and destroy message panel, we can do it now because we are on the main thread */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="comment">/* Awake the locked subthread, when called from subthread */</span></div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="comment">/* Signal completion, when called from main thread. Message panel will be destroyed by the caller */</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, button);</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;}</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1528</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(gpointer user_data)</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;{</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> == NULL)</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</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="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae2cec8bc8216154388727b7e35200667">remmina_message_panel_setup_auth</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a>)</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a67a48217d44350e028ed95b1b55f0b0f">remmina_message_panel_field_set_switch</a>(mp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>, (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>[0] == 0) ? FALSE: TRUE);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</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;cacert&quot;</span>)) != NULL)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>, s);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</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;cacrl&quot;</span>)) != NULL)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>, s);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</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;clientcert&quot;</span>)) != NULL)</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>, s);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</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;clientkey&quot;</span>)) != NULL)</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>, s);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a> = mp;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1569</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l01570"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5"> 1570</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>;</div><div class="line"><a name="l01571"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079"> 1571</a></span>&#160; GMainLoop * <a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>;</div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904"> 1572</a></span>&#160; gint <a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01573"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91"> 1573</a></span>&#160; gboolean <a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;} <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1576</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri)</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="keywordflow">if</span> (g_main_loop_is_running(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>))</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; g_main_loop_quit(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;}</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;</div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1582</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;{</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = response_id;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1590</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;{</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1598</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;{</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a> = TRUE;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;}</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1607</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags,</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;{</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)g_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a>;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a> = g_strdup(title);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a> = g_strdup(strpasswordlabel);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a> = g_strdup(default_username);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> = g_strdup(default_password);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a> = g_strdup(default_domain);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = FALSE;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</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="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="comment">/* Run the MessagePanel in main thread, in a very similar way of gtk_dialog_run() */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> mpri = { NULL, NULL, GTK_RESPONSE_CANCEL, FALSE };</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; gulong unmap_handler;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; gulong destroy_handler;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; gulong response_handler;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(d);</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</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="keywordflow">if</span> (!gtk_widget_get_visible(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>)))</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; gtk_widget_show(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>));</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &amp;mpri);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;unmap&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &amp;mpri);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &amp;mpri);</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; g_object_ref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a> = g_main_loop_new(NULL, FALSE);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; g_main_loop_run(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; g_main_loop_unref(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">if</span> (!mpri.<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>) {</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, response_handler);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, destroy_handler);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, unmap_handler);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; g_object_unref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</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"> 1657</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</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; rcbutton = mpri.<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = TRUE;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; pthread_cond_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, NULL);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>, NULL);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>, d);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; pthread_cond_wait(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; pthread_mutex_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; pthread_cond_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</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; rcbutton = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</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"> 1674</span>&#160;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; g_free(d);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</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="line"><a name="l01684"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1684</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;{</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, msg, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;}</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1689</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>,</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>, <span class="keyword">const</span> gchar *password_prompt)</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;{</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, title, default_username,</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">&quot;Password&quot;</span>) : password_prompt);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;}</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1697</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gboolean want_domain, gboolean allow_password_saving)</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;{</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>, *<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; pflags = <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &amp;&amp;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; pflags |= <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; username = <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="l01710"></a><span class="lineno"> 1710</span>&#160; password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, _(<span class="stringliteral">&quot;Type in SSH username and password.&quot;</span>), username,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; password, NULL, _(<span class="stringliteral">&quot;Password&quot;</span>));</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;}</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="comment"> * gint remmina_protocol_widget_panel_authpwd(RemminaProtocolWidget* gp, RemminaAuthpwdType authpwd_type, gboolean allow_password_saving)</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="comment"> * {</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment"> * RemminaFile* remminafile = gp-&gt;priv-&gt;remmina_file;</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="comment"> * int rc;</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;<span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &amp;&amp;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment"> * !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="comment"> * password_prompt = g_strdup_printf(_(&quot;%s password&quot;), remmina_file_get_string(remminafile, &quot;protocol&quot;));</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH password&quot;));</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH private key passphrase&quot;));</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"> * default:</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;Password&quot;));</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"> * rc = remmina_protocol_widget_dialog(RPWDT_AUTH, gp, pflags, password_prompt);</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"> * return rc;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01751"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31"> 1751</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;{</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>, gp, 0, NULL, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;</div><div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1759</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint)</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; gchar *s;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</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;trust_all&quot;</span>)) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), fingerprint);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; }</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; _(<span class="stringliteral">&quot;Certificate details:&quot;</span>),</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; _(<span class="stringliteral">&quot;Fingerprint:&quot;</span>), fingerprint,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; _(<span class="stringliteral">&quot;Accept certificate?&quot;</span>));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; g_free(s);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="comment">/* For compatibility with plugin API: the plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;}</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;</div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1791</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint)</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;{</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; gchar *s;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</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;trust_all&quot;</span>)) {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), new_fingerprint);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; _(<span class="stringliteral">&quot;The certificate changed! Details:&quot;</span>),</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; _(<span class="stringliteral">&quot;Old fingerprint:&quot;</span>), old_fingerprint,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; _(<span class="stringliteral">&quot;New fingerprint:&quot;</span>), new_fingerprint,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; _(<span class="stringliteral">&quot;Accept changed certificate?&quot;</span>));</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; g_free(s);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;}</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div><div class="line"><a name="l01825"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1825</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;{</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;}</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;</div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1831</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;{</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;}</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1837</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;{</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;}</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1843</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;{</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;}</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1849</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;{</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; gchar *s;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;}</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1858</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;{</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; gchar *s;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1867</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;{</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; gchar *s;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;}</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1876</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;{</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; gchar *s;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;}</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1885</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;{</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; gchar *s;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; gboolean save = FALSE;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</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="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</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="l01897"></a><span class="lineno"> 1897</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_INIT_SAVE_CRED;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</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#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</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="l01900"></a><span class="lineno"> 1900</span>&#160; g_free(d);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; }</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="comment">/* Save username and certificates if any; save the password if it’s requested to do so */</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, s);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; save = TRUE;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; }</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>) {</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; save = TRUE;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;}</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;</div><div class="line"><a name="l01939"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1939</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gint port)</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;{</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; gchar *s;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</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="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</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="l01949"></a><span class="lineno"> 1949</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</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#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</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#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port = port;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</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="l01953"></a><span class="lineno"> 1953</span>&#160; g_free(d);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a port number. “%s” is a placeholder for a protocol name (VNC).</span></div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; _(<span class="stringliteral">&quot;Listening on port %i for an incoming %s connection…&quot;</span>), port,</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, NULL, NULL);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; g_free(s);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = mp;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;}</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;</div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1968</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;{</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</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="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</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="l01977"></a><span class="lineno"> 1977</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPSHOWRETRY;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</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#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</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="l01980"></a><span class="lineno"> 1980</span>&#160; g_free(d);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Could not authenticate, attempting reconnection…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;}</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1989</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;{</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;}</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 1995</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;{</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;}</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2001</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;{</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;}</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2007</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp))</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;{</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = <a class="code" href="remmina__chat__window_8c.html#a5e4fa655fddf361fed13bbd759bea24f">remmina_chat_window_new</a>(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp))), name);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;send&quot;</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>,</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>), gp);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; gtk_widget_show(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; }</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;}</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2023</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;{</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>)</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;}</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2030</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text)</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;{</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="comment">/* This function can be called from a non main thread */</span></div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</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="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</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="l02040"></a><span class="lineno"> 2040</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_CHAT_RECEIVE;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</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#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</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#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text = text;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</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="l02044"></a><span class="lineno"> 2044</span>&#160; g_free(d);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; }</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">&quot;Server&quot;</span>), text);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; }</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;}</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;</div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2052</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;{</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = remminafile;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> = cnnobj;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</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="l02061"></a><span class="lineno"> 2061</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="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span> (!plugin || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>) {</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a protocol name, like “RDP”.</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">&quot;Install the %s protocol plugin first.&quot;</span>),</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</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="l02067"></a><span class="lineno"> 2067</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = NULL;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, FALSE);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, FALSE);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;}</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;</div><div class="line"><a name="l02077"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2077</a></span>&#160;GtkWindow *<a class="code" href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;{</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;}</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;</div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2082</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;{</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;}</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;</div><div class="line"><a name="l02087"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2087</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;{</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <span class="keywordflow">return</span> GTK_WIDGET(g_object_new(REMMINA_TYPE_PROTOCOL_WIDGET, NULL));</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;}</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;<span class="comment">/* Send one or more keystrokes to a specific widget by firing key-press and</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;<span class="comment"> * key-release events.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;<span class="comment"> * GdkEventType action can be GDK_KEY_PRESS or GDK_KEY_RELEASE or both to</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="comment"> * press the keys and release them in reversed order. */</span></div><div class="line"><a name="l02096"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705"> 2096</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action)</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;{</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; GdkEventKey event;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; gboolean result;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keyword">event</span>.string = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_PRESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; keyvals_length; i++) {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Sending keyval: %u, hardware_keycode: %u&quot;</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; }</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_RELEASE) {</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">for</span> (i = (keyvals_length - 1); i &gt;= 0; i--) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; }</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; }</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;}</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div><div class="line"><a name="l02136"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;{</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; GdkRectangle rect;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; gint w, h;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; gint wfile, hfile;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78a">RemminaProtocolWidgetResolutionMode</a> res_mode;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &amp;rect);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="comment">/* Integrity check: check that we have a cnnwin visible and get t */</span></div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_mode&quot;</span>, <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>);</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_width&quot;</span>, -1);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_height&quot;</span>, -1);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="comment">/* If resolution_mode is non-existent (-1), then we try to calculate it</span></div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>) {</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keywordflow">if</span> (wfile &lt;= 0 || hfile &lt;= 0)</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a>;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd">RES_USE_CUSTOM</a>;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; }</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a> || scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>) {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <span class="comment">/* Use internal window size as remote desktop size */</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; GtkAllocation al;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; gtk_widget_get_allocation(GTK_WIDGET(gp), &amp;al);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="comment">/* use a multiple of four to mitigate scaling when remote host rounds up */</span></div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; w = al.width - al.width % 4;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; h = al.height - al.height % 4;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span> (w &lt; 10) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; printf(<span class="stringliteral">&quot;Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n&quot;</span>, __func__, w, h);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; w = 640;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; h = 480;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="comment">/* Due to approximations while GTK calculates scaling, (w x h) may exceed our monitor geometry</span></div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; <span class="keywordflow">if</span> (w &gt; rect.width)</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; w = rect.width;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="keywordflow">if</span> (h &gt; rect.height)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; h = rect.height;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d">RES_USE_CLIENT</a>) {</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; w = rect.width;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; h = rect.height;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; w = wfile;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; h = hfile;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; }</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a> = w;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a> = h;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;}</div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
+<a href="remmina__protocol__widget_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;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;gmodule.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &lt;stdlib.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__chat__window_8h.html">remmina_chat_window.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__masterthread__exec_8h.html">remmina_masterthread_exec.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__ext__exec_8h.html">remmina_ext_exec.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__plugin__manager_8h.html">remmina_plugin_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__pref_8h.html">remmina_pref.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__protocol__widget_8h.html">remmina_protocol_widget.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="remmina__public_8h.html">remmina_public.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__ssh_8h.html">remmina_ssh.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__log_8h.html">remmina_log.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__trace__calls_8h.html">remmina/remmina_trace_calls.h</a>&quot;</span></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;<span class="preprocessor">#ifdef GDK_WINDOWING_WAYLAND</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html"> 60</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_priv.html">_RemminaProtocolWidgetPriv</a> {</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec"> 61</a></span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0"> 62</a></span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d"> 63</a></span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93"> 65</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380"> 66</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533"> 67</a></span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c"> 68</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d"> 70</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4"> 71</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">/* ssh_tunnels is an array of RemminaSSHTunnel*</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * the 1st one is the &quot;main&quot; tunnel, other tunnels are used for example in sftp commands */</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116"> 74</a></span>&#160; GPtrArray * <a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211"> 75</a></span>&#160; <a class="code" href="types_8h.html#a1ace68e95e55a30fcf8b991f52332501">RemminaTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</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="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e"> 77</a></span>&#160; GtkWidget * <a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6"> 79</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326"> 81</a></span>&#160; <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10"> 83</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca"> 84</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46"> 85</a></span>&#160; gint <a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"> 87</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640"> 88</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b"> 89</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</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">/* Data saved from the last message_panel when the user confirm */</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885"> 92</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7"> 93</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f"> 94</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791"> 95</a></span>&#160; gboolean <a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</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"><a class="line" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e"> 97</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4"> 98</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05"> 99</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0"> 100</a></span>&#160; gchar * <a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</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"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373"> 103</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> {</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c"> 104</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>,</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65"> 105</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>,</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed"> 106</a></span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a></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__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32"> 109</a></span>&#160;<a class="code" href="remmina__protocol__widget_8c.html#a247c73c70d9c58427022a4dbcd638d32">G_DEFINE_TYPE</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>, remmina_protocol_widget, GTK_TYPE_EVENT_BOX)</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;<span class="keyword">enum</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; CONNECT_SIGNAL,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; DISCONNECT_SIGNAL,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DESKTOP_RESIZE_SIGNAL,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; UPDATE_ALIGN_SIGNAL,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; LOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; UNLOCK_DYNRES_SIGNAL,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a></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;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html"> 121</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_protocol_widget_signal_data.html">_RemminaProtocolWidgetSignalData</a> {</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a"> 122</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a7a8b9ad6fdff86250a5eef649693d64a">gp</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada"> 123</a></span>&#160; <span class="keyword">const</span> gchar * <a class="code" href="struct___remmina_protocol_widget_signal_data.html#a2dfdc85f32d5eeed1d183088ac2a4ada">signal_name</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;} <a class="code" href="remmina__protocol__widget_8c.html#a91d88c61dd84299369fe3c79e19821b1">RemminaProtocolWidgetSignalData</a>;</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"><a class="line" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130"> 126</a></span>&#160;<span class="keyword">static</span> guint <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[<a class="code" href="rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7a0c34d85df8279641afad9e3c9b3a54ce">LAST_SIGNAL</a>] =</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{ 0 };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74"> 129</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8c125f58aa4fac0e4c88f293e4d4dd74">remmina_protocol_widget_class_init</a>(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a> *klass)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[CONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;connect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, connect), NULL, NULL,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DISCONNECT_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;disconnect&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, disconnect), NULL, NULL,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[DESKTOP_RESIZE_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;desktop-resize&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>), NULL, NULL,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UPDATE_ALIGN_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;update-align&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>), NULL, NULL,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[LOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;lock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2c2a41aeee8f3ef6481378a95c02c130">remmina_protocol_widget_signals</a>[UNLOCK_DYNRES_SIGNAL] = g_signal_new(<span class="stringliteral">&quot;unlock-dynres&quot;</span>, G_TYPE_FROM_CLASS(klass),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(<a class="code" href="struct___remmina_protocol_widget_class.html">RemminaProtocolWidgetClass</a>, <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>), NULL, NULL,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 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="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1"> 153</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">int</span> i;</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;LibSSH support turned off, no need to free SSH tunnel data&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#endif</span></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; g_ptr_array_set_size(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, 0);</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;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f"> 171</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gpointer data)</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"> 173</span>&#160; TRACE_CALL(__func__);</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = NULL;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = 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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</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; g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = NULL;</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(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = NULL;</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; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</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">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; g_ptr_array_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, TRUE);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = NULL;</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;}</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__protocol__widget_8h.html#a290eb68f0e86de1b7b82e2d98a1494d1"> 216</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; GtkWidget *child;</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; child = gtk_bin_get_child(GTK_BIN(gp));</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; <span class="keywordflow">if</span> (child) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; gtk_widget_set_can_focus(child, TRUE);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gtk_widget_grab_focus(child);</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;}</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"><a class="line" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df"> 229</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0fcec40aae330e115d1bae66aeefb3df">remmina_protocol_widget_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a> *priv;</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; priv = g_new0(<a class="code" href="struct___remmina_protocol_widget_priv.html">RemminaProtocolWidgetPriv</a>, 1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a> = priv;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> = g_ptr_array_new();</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_signal_connect(G_OBJECT(gp), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7e54d9bb42d2d337527d3af657ef1e1f">remmina_protocol_widget_destroy</a>), NULL);</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="l00242"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd"> 242</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gpointer data)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;{</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Opening connection&quot;</span>);</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; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; gint num_plugin;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; gint num_ssh;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = FALSE;</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; plugin = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a>(gp);</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; <span class="keywordflow">for</span> (num_plugin = 0, feature = (<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *)plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; num_plugin++, feature++) {</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;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; num_ssh = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; num_ssh += 2;</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">#endif</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (num_plugin + num_ssh == 0) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = NULL;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a> = g_new0(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>, num_plugin + num_ssh + 1);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; memcpy(feature, plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>, <span class="keyword">sizeof</span>(<a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>) * num_plugin);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; feature += num_plugin;</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="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Have SSH&quot;</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (num_ssh) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SSH;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Connect via SSH from a new terminal&quot;</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;utilities-terminal&quot;</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; feature++;</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; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> = REMMINA_PROTOCOL_FEATURE_TOOL_SFTP;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aa7ac5ec9d95867734619583a2049e952">opt1</a> = _(<span class="stringliteral">&quot;Open SFTP transfer…&quot;</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a4b8ffd6e32126a9c4d2074521279b12b">opt1_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#aab44850c13a7e5e20a02603ae173d53d">opt2</a> = <span class="stringliteral">&quot;folder-remote&quot;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a006b0d6d883c6dd0da6c444991973ac7">opt2_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288a0f7883d48c9106883a2b7c9c021ebdcd">REMMINA_TYPEHINT_STRING</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#ab3c15094a16418c5951c5382c8a44190">opt3</a> = NULL;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a9abdee80580cddd54405d0577e459c2c">opt3_type_hint</a> = <a class="code" href="types_8h.html#ab0b29804e77812ca42752bf4f379a288ab774d380798d305b72f4301143d3f440">REMMINA_TYPEHINT_UNDEFINED</a>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; feature++;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> = <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</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; <span class="keywordflow">if</span> (!plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>(gp))</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</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;</div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5"> 308</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)cbdata;</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; <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(gp);</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"><a class="line" href="remmina__protocol__widget_8h.html#a6399c3828908e36ed6202b5599bd206b"> 315</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6399c3828908e36ed6202b5599bd206b">remmina_protocol_widget_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; gchar *s;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> gchar *name;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; RemminaMessagePanel *mp;</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; <span class="comment">/* Exec precommand before everything else */</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Executing external commands…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;precommand&quot;</span>);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; name = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;name&quot;</span>);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for the connection profile name</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; s = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s”…&quot;</span>), (name ? name : <span class="stringliteral">&quot;*&quot;</span>));</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; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, <a class="code" href="remmina__protocol__widget_8c.html#a4fb4c2252289e8e891376db6279ef8f5">cancel_open_connection_cb</a>, gp);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; g_free(s);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = mp;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <a class="code" href="remmina__protocol__widget_8c.html#a76ad91e7f8648699f71c466e203aa6dd">remmina_protocol_widget_open_connection_real</a>(gp);</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"><a class="line" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016"> 343</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">/* This will close all tunnels */</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a11480396cb379860d16d9d41ef91ecb1">remmina_protocol_widget_close_all_tunnels</a>(gp);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">/* Exec postcommand */</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="remmina__ext__exec_8c.html#a7c81795162a70d06294fdf935ea210d7">remmina_ext_exec_new</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;postcommand&quot;</span>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="comment">/* Notify listeners (usually rcw) that the connection is closed */</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a1cae52cad394f317c712eb4fd709d261"> 359</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a1cae52cad394f317c712eb4fd709d261">remmina_protocol_widget_signal_connection_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Plugin told us that it closed the connection,</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a> = TRUE;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a69757e0c39fa9fcf31800f6375772016">conn_closed</a>, (gpointer)gp);</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"><a class="line" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48"> 368</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i]);</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a>);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = NULL;</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>) {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">connect_message_panel</a> = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;connect&quot;</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a05b5edfc3d3d0dcff1745d1d35aaca5c"> 391</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05b5edfc3d3d0dcff1745d1d35aaca5c">remmina_protocol_widget_signal_connection_opened</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Plugin told us that it opened the connection,</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * add async event to main thread to complete our close tasks */</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#af4a20ef0ff8cc86feeba345498179e48">conn_opened</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a"> 399</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;update-align&quot;</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"><a class="line" href="remmina__protocol__widget_8h.html#aa88afa1e3f04974974a8be324b0a930e"> 408</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa88afa1e3f04974974a8be324b0a930e">remmina_protocol_widget_update_align</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#a8565f01f8b5a3f0ee4518bda5f923f9a">update_align</a>, (gpointer)gp);</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"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc"> 415</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;lock-dynres&quot;</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e"> 424</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;unlock-dynres&quot;</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a36e01bda95825ee6b5f164f52af7c457"> 433</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a36e01bda95825ee6b5f164f52af7c457">remmina_protocol_widget_lock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#ab2b4a7c615a472ad391d1c06ea1f00cc">lock_dynres</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2551dd6f53480609596d2695040fba5d"> 440</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2551dd6f53480609596d2695040fba5d">remmina_protocol_widget_unlock_dynres</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Called by the plugin to do updates on rcw */</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#add3775989fb5ed7a7f1f7c9b5980a94e">unlock_dynres</a>, (gpointer)gp);</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;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565"> 447</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>(gpointer data)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)data;</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_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;desktop-resize&quot;</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"><a class="line" href="remmina__protocol__widget_8h.html#a9acf045c5a3eec5b7f748678dee0d3ee"> 456</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;{</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">/* Called by the plugin to do updates on rcw */</span></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; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aeaf728bb767c1bbdda6a0d8dc3553565">desktop_resize</a>, (gpointer)gp);</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"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa41324b7175c46bb42b978332db95d22"> 464</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; <span class="comment">/* kindly ask the protocol plugin to close the connection.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * Nothing else is done here. */</span></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; <span class="keywordflow">if</span> (!GTK_IS_WIDGET(gp))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</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;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>) {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">/* Connection is already closed by the plugin, but</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment"> * rcw is asking to close again (usually after an error panel)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">/* Clear the current error, or &quot;disconnect&quot; signal func will reshow a panel */</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, NULL);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; g_signal_emit_by_name(G_OBJECT(gp), <span class="stringliteral">&quot;disconnect&quot;</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="comment">/* Ask the plugin to close, async.</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="comment"> * The plugin will emit a &quot;disconnect&quot; signal on gp to call our</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment"> * remmina_protocol_widget_on_disconnected() when done */</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4b21147a7592bf689c9f761d9e4fdc2">close_connection</a>(gp);</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; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a480f842fac65440c367bf3c3d87d2601"> 499</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a> ? TRUE : FALSE;</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="l00507"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#affb2413c00f0681fe08f90523f7e1471"> 507</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#affb2413c00f0681fe08f90523f7e1471">remmina_protocol_widget_send_keystrokes</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</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 *keystrokes = g_object_get_data(G_OBJECT(widget), <span class="stringliteral">&quot;keystrokes&quot;</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; guint *keyvals;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gint i;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; gunichar character;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; guint keyval;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; gint n_keys;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; gchar * search;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; gchar * replace;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; guint keyval;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; KeystrokeReplace keystrokes_replaces[] =</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; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; { NULL, NULL, 0 }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; };</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; <span class="comment">/* Keystrokes can only be sent to plugins that accepts them */</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes before replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; keystrokes = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(keystrokes,</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; keystrokes_replaces[i].search,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; keystrokes_replaces[i].replace));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keystrokes after replacement is \&#39;%s\&#39;&quot;</span>, keystrokes);</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; gchar *iter = g_strdup(keystrokes);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; keyvals = (guint *)g_malloc(strlen(keystrokes));</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">for</span> (i = 0; keystrokes_replaces[i].replace; i++) {</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (character == keystrokes_replaces[i].replace[0]) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; keyval = keystrokes_replaces[i].keyval;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; character = 0;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; g_warning(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">continue</span>;</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="l00573"></a><span class="lineno"> 573</span>&#160; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; n_keys = 0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; g_free(keys);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</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; g_free(keyvals);</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; g_free(keystrokes);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;}</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06"> 598</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>(GtkClipboard *clipboard, <span class="keyword">const</span> gchar *clip_text, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; gchar *text = g_utf8_normalize(clip_text, -1, G_NORMALIZE_DEFAULT_COMPOSE);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; guint *keyvals;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; gint i;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gunichar character;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; guint keyval;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; GdkKeymapKey *keys;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gint n_keys;</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; <span class="comment">/* Single keystroke replace */</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keyword">typedef</span> <span class="keyword">struct </span>_KeystrokeReplace {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; gchar * search;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gchar * replace;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; guint keyval;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; } KeystrokeReplace;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">/* Special characters to replace */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; KeystrokeReplace text_replaces[] =</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; { <span class="stringliteral">&quot;\\n&quot;</span>, <span class="stringliteral">&quot;\n&quot;</span>, GDK_KEY_Return },</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; { <span class="stringliteral">&quot;\\t&quot;</span>, <span class="stringliteral">&quot;\t&quot;</span>, GDK_KEY_Tab },</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; { <span class="stringliteral">&quot;\\b&quot;</span>, <span class="stringliteral">&quot;\b&quot;</span>, GDK_KEY_BackSpace },</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; { <span class="stringliteral">&quot;\\e&quot;</span>, <span class="stringliteral">&quot;\e&quot;</span>, GDK_KEY_Escape },</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; { <span class="stringliteral">&quot;\\\\&quot;</span>, <span class="stringliteral">&quot;\\&quot;</span>, GDK_KEY_backslash },</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; { NULL, NULL, 0 }</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;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__protocol__widget_8c.html#a480f842fac65440c367bf3c3d87d2601">remmina_protocol_widget_plugin_receives_keystrokes</a>(gp)) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (text) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="comment">/* Replace special characters */</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard before replacement is \&#39;%s\&#39;&quot;</span>, text);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; text = g_strdup(<a class="code" href="remmina__public_8c.html#a8d7d9b3c8050545469b1af9a35b043a2">remmina_public_str_replace_in_place</a>(text,</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; text_replaces[i].search,</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; text_replaces[i].replace));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Text clipboard after replacement is \&#39;%s\&#39;&quot;</span>, text);</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; gchar *iter = g_strdup(text);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Iter: %s&quot;</span>, iter),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; keyvals = (guint *)g_malloc(strlen(text));</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">/* Process each character in the keystrokes */</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; character = g_utf8_get_char_validated(iter, -1);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Char: U+%04&quot;</span> G_GINT32_FORMAT<span class="stringliteral">&quot;X&quot;</span>, character);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (character == 0)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; keyval = gdk_unicode_to_keyval(character);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">/* Replace all the special character with its keyval */</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span> (i = 0; text_replaces[i].replace; i++) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (character == text_replaces[i].replace[0]) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; keys = g_new0(GdkKeymapKey, 1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; keyval = text_replaces[i].keyval;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Special Keyval: %u&quot;</span>, keyval);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">/* A special character was generated, no keyval lookup needed */</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; character = 0;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="comment">/* Decode character if it’s not a special character */</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (character) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">/* get keyval without modifications */</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &amp;keys, &amp;n_keys)) {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;keyval 0x%04x has no keycode!&quot;</span>, keyval);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</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; <span class="comment">/* Add modifier keys */</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; n_keys = 0;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 1)</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; keyvals[n_keys++] = GDK_KEY_Shift_L;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (keys-&gt;level &amp; 2)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; keyvals[n_keys++] = GDK_KEY_Alt_R;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * @fixme heap buffer overflow</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * In some cases, for example sending \t as the only sequence</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * may lead to a buffer overflow</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; keyvals[n_keys++] = keyval;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="comment">/* Send keystroke to the plugin */</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a92bb5524267ad4fe682fc07f778500d7">send_keystrokes</a>(gp, keyvals, n_keys);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; g_free(keys);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">/* Process next character in the keystrokes */</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; iter = g_utf8_find_next_char(iter, NULL);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; g_free(keyvals);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; g_free(text);</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>;</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"><a class="line" href="remmina__protocol__widget_8h.html#acf40f566116cf43af26891cd37af4eb1"> 694</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#acf40f566116cf43af26891cd37af4eb1">remmina_protocol_widget_send_clipboard</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkMenuItem *widget)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; GtkClipboard *clipboard;</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; clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);</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; <span class="comment">/* Request the contents of the clipboard, contents_received will be</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> * called when we do get the contents.</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; gtk_clipboard_request_text(clipboard,</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a2f5270c5e5007a8e95f4d460c11b2a06">remmina_protocol_widget_send_clip_strokes</a>, gp);</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;</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a57ac13fc4a2653c40e0601183628c0ca"> 708</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="struct___remmina_plugin_screenshot_data.html">RemminaPluginScreenshotData</a> *rpsd)</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;{</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;plugin screenshot function is not implemented, using core Remmina functionality&quot;</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>(gp, rpsd);</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__protocol__widget_8h.html#a1585ea6908dd5c0a9b0f47d409916435"> 719</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1585ea6908dd5c0a9b0f47d409916435">remmina_protocol_widget_map_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Map plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> FALSE;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin mapping function&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ae0dc6952f8015848cf97950fcc7d9997">map_event</a>(gp);</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;</div><div class="line"><a name="l00731"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac9da39853a32523057759a498bf6ac0a"> 731</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac9da39853a32523057759a498bf6ac0a">remmina_protocol_widget_unmap_event</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;{</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (!gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad4778e62aa78baace7d46fb1c4a475c4">get_plugin_screenshot</a>) {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Unmap plugin function not implemented&quot;</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l00739"></a><span class="lineno"> 739</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling plugin unmapping function&quot;</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#abfb8cc172b53c16c8099eba7ab3bbc57">unmap_event</a>(gp);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#ac3e5a7f14aef4adb2e57d35e9c180b3b"> 743</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac3e5a7f14aef4adb2e57d35e9c180b3b">remmina_protocol_widget_emit_signal</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *signal_name)</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; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Emitting signals should be used from the object itself, not from another object&quot;</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keyword">raise</span>(SIGINT);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</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="l00751"></a><span class="lineno"> 751</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</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="l00754"></a><span class="lineno"> 754</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_EMIT_SIGNAL;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</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#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.signal_name = signal_name;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</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#a46c919e7c8529074e19f46cf1b545f97">protocolwidget_emit_signal</a>.gp = gp;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</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="l00758"></a><span class="lineno"> 758</span>&#160; g_free(d);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">return</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; g_signal_emit_by_name(G_OBJECT(gp), signal_name);</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"><a class="line" href="remmina__protocol__widget_8h.html#af9b6a2c2665010ab09a6d9943f9850bd"> 764</a></span>&#160;<span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *<a class="code" href="remmina__protocol__widget_8c.html#af9b6a2c2665010ab09a6d9943f9850bd">remmina_protocol_widget_get_features</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aca49dce014d8471be0d3cfe29cc7a35d">features</a>;</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;</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#adbe15328275677cb38bd8c8a2d5e039d"> 770</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#adbe15328275677cb38bd8c8a2d5e039d">remmina_protocol_widget_query_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a> &amp;&amp;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a4017a800d7803a40d606ffce2578509a"> 787</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a4017a800d7803a40d606ffce2578509a">remmina_protocol_widget_query_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#aa49520ac95b505c111abfb7f3b7c55de">query_feature</a>(gp, feature);</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__protocol__widget_8h.html#a6a630e96e5b914d60d678ae8eaad4cd9"> 793</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a6a630e96e5b914d60d678ae8eaad4cd9">remmina_protocol_widget_call_feature_by_type</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5">RemminaProtocolFeatureType</a> type, gint <span class="keywordtype">id</span>)</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="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature;</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; <span class="keywordflow">for</span> (feature = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#afa1a3a21c504b386cecfb42d1c9e6bff">features</a>; feature &amp;&amp; feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a>; feature++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">if</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">type</a> == type &amp;&amp; (<span class="keywordtype">id</span> == 0 || feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a> == <span class="keywordtype">id</span>)) {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(gp, feature);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</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"><a class="line" href="remmina__protocol__widget_8h.html#a605b69a9aa4393024369cc5070488692"> 806</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a605b69a9aa4393024369cc5070488692">remmina_protocol_widget_call_feature_by_ref</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SSH:</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SSH&quot;</span>), NULL,</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">case</span> REMMINA_PROTOCOL_FEATURE_TOOL_SFTP:</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a> &amp;&amp; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &gt; 0) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="rcw_8c.html#ad3c2fe67b137c757bd21b79ad5dcc5ff">rcw_open_from_file_full</a>(</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <a class="code" href="remmina__file_8c.html#a52a0986eaf54c9e606ce9cdf8bb57e60">remmina_file_dup_temp_protocol</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;SFTP&quot;</span>), NULL,</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0], NULL);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a4908abc6c70c59c42e2757aecaa25cf1">call_feature</a>(gp, feature);</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__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1"> 835</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, FALSE);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0"> 843</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>(GtkWidget *widget, GdkEventKey *event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;{</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>)</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a>(gp, event-&gt;keyval, TRUE);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> FALSE;</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"><a class="line" href="remmina__protocol__widget_8h.html#a13e14fa81f7ca52942415a7caf5b932c"> 852</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a13e14fa81f7ca52942415a7caf5b932c">remmina_protocol_widget_register_hostkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GtkWidget *widget)</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;{</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a1caaa7bea6ef53e5c7e8109f3d0814e1">remmina_protocol_widget_on_key_press</a>), gp);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; g_signal_connect(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac1f95eb1e31c05ae0bc4027496ceafb0">remmina_protocol_widget_on_key_release</a>), gp);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a5aaadd752a3275a0a8e0018a3dd669f8"> 859</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a5aaadd752a3275a0a8e0018a3dd669f8">remmina_protocol_widget_set_hostkey_func</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="remmina__protocol__widget_8h.html#ab89fba118812616a3e47504cfe4f3390">RemminaHostkeyFunc</a> func)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac613cf4b362b9dfc25e66f9d265e9326">hostkey_func</a> = func;</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;</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a78b123eca6709bceeacda7d791a94bf1"> 865</a></span>&#160;RemminaMessagePanel *<a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, <span class="keyword">const</span> gchar *msg, <a class="code" href="remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a">RemminaMessagePanelCallback</a> response_callback, gpointer response_callback_data)</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"> 867</span>&#160; RemminaMessagePanel *mp;</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; <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="l00870"></a><span class="lineno"> 870</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</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="l00873"></a><span class="lineno"> 873</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPPROGRESS;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</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>.cnnobj = cnnobj;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</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>.message = msg;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</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 = response_callback;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</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_data = response_callback_data;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</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="l00879"></a><span class="lineno"> 879</span>&#160; mp = 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;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; g_free(d);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</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; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, msg, response_callback, response_callback_data);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(cnnobj, mp);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="keywordflow">return</span> mp;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a97cba8208a4348446159bf465b3233f5"> 890</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(<a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj, RemminaMessagePanel *mp)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;{</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</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="l00893"></a><span class="lineno"> 893</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</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="l00896"></a><span class="lineno"> 896</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPDESTROY;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</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#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.cnnobj = cnnobj;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</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#a75007c472a404959a00cdebd8efc951a">protocolwidget_mpdestroy</a>.mp = mp;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</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="l00900"></a><span class="lineno"> 900</span>&#160; g_free(d);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(cnnobj, mp);</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227"> 907</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling an opening tunnel is not implemented\n&quot;</span>);</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;</div><div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3"> 912</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *<a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; gint ret;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; gchar *msg;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; gboolean partial = FALSE;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; gboolean cont = FALSE;</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; tunnel = <a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Creating SSH tunnel to “%s” via SSH…&quot;</span>, REMMINA_SSH(tunnel)-&gt;server);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), REMMINA_SSH(tunnel)-&gt;server);</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; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a99ba55ddcb17c9e87ca233fa83787227">cancel_init_tunnel_cb</a>, NULL);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; g_free(msg);</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;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">if</span> (!partial) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Tunnel init session error: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">break</span>;</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; }</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; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication success&quot;</span>);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>:</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Continue with the next auth method&quot;</span>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; partial = TRUE;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>:</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Reconnecting…&quot;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;session) {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; ssh_disconnect(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; ssh_free(REMMINA_SSH(tunnel)-&gt;session);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; REMMINA_SSH(tunnel)-&gt;session = NULL;</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_free(REMMINA_SSH(tunnel)-&gt;callback);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="comment">// Continue the loop: OK</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>:</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Interrupted by the user&quot;</span>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Error during the authentication: %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="comment">// exit the loop here: OK</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">goto</span> BREAK;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; }</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;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; cont = TRUE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">break</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;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="preprocessor">#if 0</span></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; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(REMMINA_SSH(tunnel))) {</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot init SSH session with tunnel struct&quot;</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(REMMINA_SSH(tunnel), gp, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>);</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Tunnel auth returned %d&quot;</span>, ret);</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">if</span> (ret != <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>)</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="preprocessor">#endif</span></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;BREAK:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">if</span> (!cont) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> NULL;</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</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; <span class="keywordflow">return</span> tunnel;</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3"> 1016</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_direct_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb"> 1021</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;{</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; guint idx = 0;</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="preprocessor">#if GLIB_CHECK_VERSION(2, 54, 0)</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; gboolean found = g_ptr_array_find(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel, &amp;idx);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; gboolean found = FALSE;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len; i++) {</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">if</span> ((<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[i] == tunnel) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; found = TRUE;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; idx = i;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; printf(<span class="stringliteral">&quot;Tunnel %s found at idx = %d\n&quot;</span>, found ? <span class="stringliteral">&quot;yes&quot;</span>: <span class="stringliteral">&quot;not&quot;</span>, idx);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (found) {</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;[Tunnel with idx %u has been disconnected&quot;</span>, idx);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; g_ptr_array_remove(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</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; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9d55210413d6a313478f81cf76ecf1b7"> 1057</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9d55210413d6a313478f81cf76ecf1b7">remmina_protocol_widget_start_direct_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint default_port, gboolean port_plus)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">const</span> gchar *ssh_tunnel_server;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; gchar *ssh_tunnel_host, *srv_host, *dest;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; gint srv_port, ssh_tunnel_port = 0;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel initialization…&quot;</span>);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; ssh_tunnel_server = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_server&quot;</span>);</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; <span class="keywordflow">if</span> (!server)</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> g_strdup(<span class="stringliteral">&quot;&quot;</span>);</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; <span class="keywordflow">if</span> (strstr(g_strdup(server), <span class="stringliteral">&quot;unix:///&quot;</span>) != NULL) {</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s is a UNIX socket&quot;</span>, server);</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> g_strdup(server);</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"> 1078</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port (tunnel)&quot;</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server: %s, port: %d&quot;</span>, srv_host, srv_port);</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; <span class="keywordflow">if</span> (port_plus &amp;&amp; srv_port &lt; 100)</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="comment">/* Protocols like VNC supports using instance number :0, :1, etc. as port number. */</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; srv_port += default_port;</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"> 1088</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; gchar *msg;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE)) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> dest;</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;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;remmina_protocol_widget_init_tunnel failed with error is %s&quot;</span>,</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(gp));</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for an hostname or an IP address.</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to “%s” via SSH…&quot;</span>), server);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a0a93da80662ff18b93270ced59243ce3">cancel_start_direct_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; g_free(msg);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_loopback&quot;</span>, FALSE)) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; ssh_tunnel_host = NULL;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; srv_host = g_strdup(<span class="stringliteral">&quot;127.0.0.1&quot;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Starting tunnel to: %s, port: %d&quot;</span>, ssh_tunnel_host, ssh_tunnel_port);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(tunnel, srv_host, srv_port, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>)) {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aecd801fbe5399bbeb5832657bce193cb">remmina_protocol_widget_tunnel_destroy</a>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a> = (gpointer)gp;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;127.0.0.1:%i&quot;</span>, <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#af348bb968fd98ba269c4e253750e2400">sshtunnel_port</a>);</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="preprocessor">#else</span></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"> 1143</span>&#160; dest = g_strdup_printf(<span class="stringliteral">&quot;[%s]:%i&quot;</span>, srv_host, srv_port);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; g_free(srv_host);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; g_free(ssh_tunnel_host);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> dest;</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;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;}</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac"> 1152</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</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; printf(<span class="stringliteral">&quot;Remmina: Cancelling start_reverse_tunnel is not implemented\n&quot;</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;}</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;</div><div class="line"><a name="l01159"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c"> 1159</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa6d9f2f558fcd9e7fe58eefcde1c3c5c">remmina_protocol_widget_start_reverse_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint local_port)</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; gchar *msg;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;ssh_tunnel_enabled&quot;</span>, FALSE))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp)))</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a TCP port number.</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Awaiting incoming SSH connection on port %i…&quot;</span>), <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0));</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#aeffe07c6412286d99ba04f05fe74aeac">cancel_start_reverse_tunnel_cb</a>, NULL);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; g_free(msg);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(tunnel, <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;listenport&quot;</span>, 0), local_port)) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> FALSE;</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">return</span> TRUE;</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__protocol__widget_8h.html#a12eddf3428a53201ee0a2ec422d2fa4a"> 1190</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a12eddf3428a53201ee0a2ec422d2fa4a">remmina_protocol_widget_ssh_exec</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean wait, <span class="keyword">const</span> gchar *fmt, ...)</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;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; ssh_channel channel;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; gint status;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; gchar *cmd, *ptr;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; va_list args;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</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"> 1206</span>&#160; if ((channel = ssh_channel_new(REMMINA_SSH(tunnel)-&gt;session)) == NULL)</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; cmd = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; va_end(args);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_session(channel) == SSH_OK &amp;&amp;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; ssh_channel_request_exec(channel, cmd) == SSH_OK) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (wait) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; status = ssh_channel_get_exit_status(channel);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; ptr = strchr(cmd, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (ptr) *ptr = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">switch</span> (status) {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; ret = TRUE;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">case</span> 127:</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path.</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; _(<span class="stringliteral">&quot;The “%s” command is not available on the SSH server.&quot;</span>), cmd);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a place holder for a unix command path. “%i” is a placeholder for an error code number.</span></div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; _(<span class="stringliteral">&quot;Could not run the “%s” command on the SSH server (status = %i).&quot;</span>), cmd, status);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">break</span>;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; ret = TRUE;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="comment">// TRANSLATORS: %s is a placeholder for an error message</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not run command. %s&quot;</span>));</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"> 1242</span>&#160; g_free(cmd);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (wait)</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">return</span> FALSE;</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"> 1252</span>&#160;<span class="preprocessor">#endif</span></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;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01256"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736"> 1256</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;{</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; gchar *server;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; gint port;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; gboolean ret;</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"> 1264</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 177, &amp;server, &amp;port);</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; ret = ((<a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a>)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)(gp,</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : server), port);</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; g_free(server);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">return</span> ret;</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"><a class="line" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee"> 1273</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;{</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;}</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d"> 1279</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = REMMINA_PROTOCOL_WIDGET(data);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (REMMINA_SSH(tunnel)-&gt;error)</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a>, gp);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;}</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01292"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9"> 1292</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>(<span class="keywordtype">void</span> *cbdata, <span class="keywordtype">int</span> btn)</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;{</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; printf(<span class="stringliteral">&quot;Remmina: Cancelling an XPort connection is not implemented\n&quot;</span>);</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="preprocessor">#endif</span></div><div class="line"><a name="l01297"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a172fa9cf2ce196c9846a3e47ea9036b4"> 1297</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a172fa9cf2ce196c9846a3e47ea9036b4">remmina_protocol_widget_start_xport_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#afae2f546eaf9ef8a816a804e830055bf">RemminaXPortTunnelInitFunc</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>)</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;{</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; gboolean bindlocalhost;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; gchar *server;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; gchar *msg;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keywordflow">if</span> (!(tunnel = <a class="code" href="remmina__protocol__widget_8c.html#a5567a5c55d9a880d174faabafcd15fa3">remmina_protocol_widget_init_tunnel</a>(gp))) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a hostname or IP address.</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; msg = g_strdup_printf(_(<span class="stringliteral">&quot;Connecting to %s via SSH…&quot;</span>), <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>));</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; mp = <a class="code" href="remmina__protocol__widget_8c.html#a78b123eca6709bceeacda7d791a94bf1">remmina_protocol_widget_mpprogress</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, msg, <a class="code" href="remmina__protocol__widget_8c.html#a05f9694efc84de6273efa46d232b84f9">cancel_connect_xport_cb</a>, NULL);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; g_free(msg);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a41a28954660d2d3816630e2ef9bb4211">init_func</a>;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#aeaa588b63800d3762b738fbbfd4a1736">remmina_protocol_widget_xport_tunnel_init_callback</a>;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#adfac12e7a563dc06fb2f0c8307f40fee">remmina_protocol_widget_xport_tunnel_connect_callback</a>;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = <a class="code" href="remmina__protocol__widget_8c.html#a450fbca7e27c952b6aaba6e33192051d">remmina_protocol_widget_xport_tunnel_disconnect_callback</a>;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = gp;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;server&quot;</span>), 0, &amp;server, NULL);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; bindlocalhost = (g_strcmp0(REMMINA_SSH(tunnel)-&gt;server, server) == 0);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; g_free(server);</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; <span class="keywordflow">if</span> (!<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(tunnel, bindlocalhost)) {</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, <span class="stringliteral">&quot;Could not open channel, %s&quot;</span>,</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; ssh_get_error(REMMINA_SSH(tunnel)-&gt;session));</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(tunnel);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</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; <a class="code" href="remmina__protocol__widget_8c.html#a97cba8208a4348446159bf465b3233f5">remmina_protocol_widget_mpdestroy</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; g_ptr_array_add(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>, tunnel);</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; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="preprocessor">#endif</span></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;</div><div class="line"><a name="l01342"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a15368afcbeb770f8cf25941bd49e7b54"> 1342</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a15368afcbeb770f8cf25941bd49e7b54">remmina_protocol_widget_set_display</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint display)</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;{</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="preprocessor">#ifdef HAVE_LIBSSH</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;len &lt; 1)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a277fd3954a4f89c6ddddd68f4ffb5116">ssh_tunnels</a>-&gt;pdata[0];</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; if (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>) g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = g_strdup_printf(<span class="stringliteral">&quot;unix:%i&quot;</span>, display);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#endif</span></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__protocol__widget_8h.html#ab4c6435ef92e34a94270069ce1861907"> 1355</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ab4c6435ef92e34a94270069ce1861907">remmina_protocol_widget_get_profile_remote_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; <span class="comment">/* Returns the width of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a>;</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"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#abdf99138612d02bc3921b0b77bdc89cb"> 1362</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#abdf99138612d02bc3921b0b77bdc89cb">remmina_protocol_widget_get_multimon</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;{</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">/* Returns ehenever multi monitor is enabled (1) */</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;multimon&quot;</span>, -1);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Multi monitor is set to %d&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ac45744265fe3f8aa36b650faa9991b46">multimon</a>;</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;</div><div class="line"><a name="l01371"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad8df6a87e19b7751b26820ef4a668de9"> 1371</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad8df6a87e19b7751b26820ef4a668de9">remmina_protocol_widget_get_profile_remote_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;{</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="comment">/* Returns the height of remote desktop as chosen by the user profile */</span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a>;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab224a0f643d291f86ede54e373bd0a6f"> 1378</a></span>&#160;<span class="keyword">const</span> gchar* <a class="code" href="remmina__protocol__widget_8c.html#ab224a0f643d291f86ede54e373bd0a6f">remmina_protocol_widget_get_name</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;{</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">return</span> gp ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> ? gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a>-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a6e04143450eeb71e3d0b2c14983860a4">name</a> : NULL : NULL;</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"><a class="line" href="remmina__protocol__widget_8h.html#aaf355ea7103fc57a4cbc7b815cde2995"> 1384</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aaf355ea7103fc57a4cbc7b815cde2995">remmina_protocol_widget_get_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;{</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;}</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a41b62f211a8a8e960bc80aa1ba6b0380"> 1390</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a41b62f211a8a8e960bc80aa1ba6b0380">remmina_protocol_widget_set_width</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>)</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;{</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a5cbea00dcc608759fcf66186e6afde93">width</a>;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;}</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;</div><div class="line"><a name="l01396"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae609b351fff17c235251b0ba7c480da5"> 1396</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ae609b351fff17c235251b0ba7c480da5">remmina_protocol_widget_get_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;}</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aadd106cec729a80405c6097e4c662044"> 1402</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aadd106cec729a80405c6097e4c662044">remmina_protocol_widget_set_height</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>)</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;{</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#af72272c7e2f45d61130ab4e57eb86380">height</a>;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;}</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5ec62969da54155e24edcb1d998f93f7"> 1408</a></span>&#160;<a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="remmina__protocol__widget_8c.html#a5ec62969da54155e24edcb1d998f93f7">remmina_protocol_widget_get_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;{</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</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;</div><div class="line"><a name="l01414"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad6e2d00646e8268aa0e8bbe31b77db48"> 1414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ad6e2d00646e8268aa0e8bbe31b77db48">remmina_protocol_widget_set_current_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>)</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"> 1416</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;}</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a25bcb2ae99449624fed6f770218e3d25"> 1420</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a>;</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;</div><div class="line"><a name="l01426"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a0b19dbe685e4465e7f06706270e120fa"> 1426</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a0b19dbe685e4465e7f06706270e120fa">remmina_protocol_widget_set_expand</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gboolean expand)</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;{</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = expand;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#aab2f304822ccfd4979854ef1afd81771"> 1433</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#aab2f304822ccfd4979854ef1afd81771">remmina_protocol_widget_has_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;{</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8h.html#a508044024b303c286a0e643e44d85a29"> 1439</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__protocol__widget_8c.html#a508044024b303c286a0e643e44d85a29">remmina_protocol_widget_get_error_message</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;{</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;}</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a95088334da86faf9520383629fff48af"> 1445</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;{</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; va_list args;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>) g_free(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a>);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">if</span> (fmt == NULL) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = FALSE;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = NULL;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordflow">return</span>;</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;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aac57e5a1ac6fc21f95e0fb3e70745cf4">error_message</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; va_end(args);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a75d5f7d146f04132de722d0b7d09bb7d">has_error</a> = TRUE;</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;</div><div class="line"><a name="l01465"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2830f756dfc3d735b57b0c5753c429e3"> 1465</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a2830f756dfc3d735b57b0c5753c429e3">remmina_protocol_widget_is_closed</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;{</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a8700f21cfca6167fc9c4abe37c2d99b6">closed</a>;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;}</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2506e80d482c34532d0e534856452069"> 1471</a></span>&#160;<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *<a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</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;</div><div class="line"><a name="l01477"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html"> 1477</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> {</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="comment">/* Input data */</span></div><div class="line"><a name="l01479"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a"> 1479</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74"> 1480</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>;</div><div class="line"><a name="l01481"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28"> 1481</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>;</div><div class="line"><a name="l01482"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850"> 1482</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>;</div><div class="line"><a name="l01483"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361"> 1483</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>;</div><div class="line"><a name="l01484"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544"> 1484</a></span>&#160; gchar * <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>;</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7"> 1485</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8"> 1486</a></span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01487"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f"> 1487</a></span>&#160; gboolean <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="comment">/* Running status */</span></div><div class="line"><a name="l01489"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf"> 1489</a></span>&#160; pthread_mutex_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>;</div><div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda"> 1490</a></span>&#160; pthread_cond_t <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="comment">/* Output/retval */</span></div><div class="line"><a name="l01492"></a><span class="lineno"><a class="line" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5"> 1492</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;};</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;</div><div class="line"><a name="l01495"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb"> 1495</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>(<span class="keywordtype">void</span> *user_data, <span class="keywordtype">int</span> button)</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;{</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a> = button;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">if</span> (button == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a> = <a class="code" href="remmina__message__panel_8c.html#a44054d029d4615092ae8a2ee1bf81db4">remmina_message_panel_field_get_string</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a> = <a class="code" href="remmina__message__panel_8c.html#a80bc2fcb39c236da739593c2134c73fa">remmina_message_panel_field_get_switch_state</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>);</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a> = <a class="code" href="remmina__message__panel_8c.html#ab89dba73bc6832c6c5061a0d8bd0fbb4">remmina_message_panel_field_get_filename</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</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;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a>) {</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Hide and destroy message panel, we can do it now because we are on the main thread */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="comment">/* Awake the locked subthread, when called from subthread */</span></div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; pthread_cond_signal(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="comment">/* Signal completion, when called from main thread. Message panel will be destroyed by the caller */</span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="remmina__message__panel_8c.html#af7db7b9f49fe6b83b17471116d363d40">remmina_message_panel_response</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>, button);</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;}</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113"> 1528</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(gpointer user_data)</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;{</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)user_data;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keyword">const</span> gchar *s;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> == NULL)</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</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="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>) {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae2cec8bc8216154388727b7e35200667">remmina_message_panel_setup_auth</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a5c66a04852163126a3b494abe3e07e25">REMMINA_MESSAGE_PANEL_USERNAME</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a46ac68f2dea71082d090ae63c5c4505c">REMMINA_MESSAGE_PANEL_FLAG_DOMAIN</a>)</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a9efe2bb3f139ed0baf3833880fc2369a">REMMINA_MESSAGE_PANEL_DOMAIN</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a0e20944d484c95036eeb6b5d7775c901">remmina_message_panel_field_set_string</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a1d61170572fba5e968305c2ea3b0f9f6">REMMINA_MESSAGE_PANEL_PASSWORD</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> &amp; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="remmina__message__panel_8c.html#a67a48217d44350e028ed95b1b55f0b0f">remmina_message_panel_field_set_switch</a>(mp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>, (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> == NULL || d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>[0] == 0) ? FALSE: TRUE);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ae5b1825b5d4e56ecc2f25c28bb042c32">remmina_message_panel_setup_question</a>(mp, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> == <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>) {</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <a class="code" href="remmina__message__panel_8c.html#ac10f450f856ca7d9c0b6896261e9c407">remmina_message_panel_setup_auth_x509</a>(mp, <a class="code" href="remmina__protocol__widget_8c.html#aa0b0a97022961c198c3343dd2433d7cb">authpanel_mt_cb</a>, d);</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</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;cacert&quot;</span>)) != NULL)</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a10531307d859706670fb6ce4aa7308c7">REMMINA_MESSAGE_PANEL_CACERTFILE</a>, s);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</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;cacrl&quot;</span>)) != NULL)</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a703afb1dece981649f9497a9e910b779">REMMINA_MESSAGE_PANEL_CACRLFILE</a>, s);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</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;clientcert&quot;</span>)) != NULL)</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a26a6d6b3ac3f4e64662b0c72dc3982f7">REMMINA_MESSAGE_PANEL_CLIENTCERTFILE</a>, s);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</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;clientkey&quot;</span>)) != NULL)</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; <a class="code" href="remmina__message__panel_8c.html#aec9dcd96d0148fec9cdc9e94cc8dc1ff">remmina_message_panel_field_set_filename</a>(mp, <a class="code" href="remmina__message__panel_8h.html#aabfcbcb5ac86a1edac4035264bc7d2b8a34c1441f93d50321cbabcfb45918c6e3">REMMINA_MESSAGE_PANEL_CLIENTKEYFILE</a>, s);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a> = mp;</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html"> 1569</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l01570"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5"> 1570</a></span>&#160; RemminaMessagePanel * <a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>;</div><div class="line"><a name="l01571"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079"> 1571</a></span>&#160; GMainLoop * <a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>;</div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904"> 1572</a></span>&#160; gint <a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01573"></a><span class="lineno"><a class="line" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91"> 1573</a></span>&#160; gboolean <a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;} <a class="code" href="struct_mp_run_info.html">MpRunInfo</a>;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572"> 1576</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri)</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="keywordflow">if</span> (g_main_loop_is_running(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>))</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; g_main_loop_quit(mpri-&gt;<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;}</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;</div><div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf"> 1582</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>(RemminaMessagePanel *mp, gint response_id, gpointer data)</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;{</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = response_id;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d"> 1590</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;{</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;}</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"><a class="line" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8"> 1598</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>(RemminaMessagePanel *mp, gpointer data)</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;{</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *mpri = (<a class="code" href="struct_mp_run_info.html">MpRunInfo</a> *)data;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a> = TRUE;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; mpri-&gt;<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a> = GTK_RESPONSE_CANCEL;</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a25797eafabe9d6f5729b56145abe1572">shutdown_loop</a>(mpri);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;}</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54"> 1607</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<span class="keyword">enum</span> <a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373">panel_type</a> dtype, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> pflags,</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <span class="keyword">const</span> gchar *title, <span class="keyword">const</span> gchar *default_username, <span class="keyword">const</span> gchar *default_password, <span class="keyword">const</span> gchar *default_domain,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keyword">const</span> gchar *strpasswordlabel)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;{</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *d = (<span class="keyword">struct </span><a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a> *)g_malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html">remmina_protocol_widget_dialog_mt_data_t</a>));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="keywordtype">int</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a> = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a13fd74ca385ce7f7a4d6094a65bd17f7">dtype</a>;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a> = g_strdup(title);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a> = g_strdup(strpasswordlabel);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a> = g_strdup(default_username);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a> = g_strdup(default_password);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a> = g_strdup(default_domain);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = FALSE;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</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="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="comment">/* Run the MessagePanel in main thread, in a very similar way of gtk_dialog_run() */</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <a class="code" href="struct_mp_run_info.html">MpRunInfo</a> mpri = { NULL, NULL, GTK_RESPONSE_CANCEL, FALSE };</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; gulong unmap_handler;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; gulong destroy_handler;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; gulong response_handler;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>(d);</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a> = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>;</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="keywordflow">if</span> (!gtk_widget_get_visible(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>)))</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; gtk_widget_show(GTK_WIDGET(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>));</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; response_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;response&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a122e28e59acb89200937ff823b82ddaf">run_response_handler</a>), &amp;mpri);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; unmap_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;unmap&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#ac9abaedb8cc35838ef1444423a81507d">run_unmap_handler</a>), &amp;mpri);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; destroy_handler = g_signal_connect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a7b1e83afd68c2b7301fc4d6da6a8f6d8">run_destroy_handler</a>), &amp;mpri);</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; g_object_ref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a> = g_main_loop_new(NULL, FALSE);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; g_main_loop_run(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; g_main_loop_unref(mpri.<a class="code" href="struct_mp_run_info.html#acbbf3faafdfa1a05fd787730d1668079">loop</a>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">if</span> (!mpri.<a class="code" href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">destroyed</a>) {</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, response_handler);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, destroy_handler);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; g_signal_handler_disconnect(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>, unmap_handler);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; g_object_unref(mpri.<a class="code" href="struct_mp_run_info.html#a5c72860dd91def572bad1443e2c188a5">mp</a>);</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"> 1657</span>&#160; <a class="code" href="rcw_8c.html#a96e821dc68caa7f3380a513eb47aead7">rco_destroy_message_panel</a>(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">auth_message_panel</a>);</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; rcbutton = mpri.<a class="code" href="struct_mp_run_info.html#acb8e8aaf721611a761541a325e2a5904">response</a>;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a81eb96409c1543bcf2d9474d4d89907f">called_from_subthread</a> = TRUE;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="comment">// pthread_cleanup_push(ptcleanup, (void*)d);</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; pthread_cond_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, NULL);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>, NULL);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; g_idle_add(<a class="code" href="remmina__protocol__widget_8c.html#aa9639b76ac0a92647ce08bdfe943d113">remmina_protocol_widget_dialog_mt_setup</a>, d);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; pthread_cond_wait(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>, &amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">// pthread_cleanup_pop(0);</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; pthread_mutex_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3ecf120415414844ebcf07a1c86e9cdf">pt_mutex</a>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; pthread_cond_destroy(&amp;d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a9ee011a8e1d09de188018e634aa2bbda">pt_cond</a>);</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; rcbutton = d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</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"> 1674</span>&#160;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544">strpasswordlabel</a>);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; g_free(d-&gt;<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; g_free(d);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a29b8f44a7f4514422d3a5e04e0b8f0b5">rcbutton</a>;</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="line"><a name="l01684"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9092c29f585fdabaf0ce7e865670053b"> 1684</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;{</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, msg, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;}</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aebc7c7d34c470081a52aa35d998ce868"> 1689</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486">RemminaMessagePanelFlags</a> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>,</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a3f67e6ca406ec87db6ae6a3582770c74">title</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#ad9460e6c8e837ce941568d74499e0b28">default_username</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a650c926c67ed4ec841cf8553d6454850">default_password</a>, <span class="keyword">const</span> gchar *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a14655c577c6f070ee28f4211baf05361">default_domain</a>, <span class="keyword">const</span> gchar *password_prompt)</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;{</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, title, default_username,</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; default_password, default_domain, password_prompt == NULL ? _(<span class="stringliteral">&quot;Password&quot;</span>) : password_prompt);</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;}</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ad637ec849c497e4a0d4c723396aa6fba"> 1697</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#ad637ec849c497e4a0d4c723396aa6fba">remmina_protocol_widget_panel_authuserpwd_ssh_tunnel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gboolean want_domain, gboolean allow_password_saving)</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;{</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordtype">unsigned</span> <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8">pflags</a>;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keyword">const</span> gchar *<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>, *<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>;</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; pflags = <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__file_8c.html#ad1e4f3a0f64cd98e301044b6c38a1f1d">remmina_file_get_filename</a>(remminafile) != NULL &amp;&amp;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; pflags |= <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; username = <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="l01710"></a><span class="lineno"> 1710</span>&#160; password = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span>);</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373af288a06859b2eb1df4a011e1c2cba44c">RPWDT_AUTH</a>, gp, pflags, _(<span class="stringliteral">&quot;Type in SSH username and password.&quot;</span>), username,</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; password, NULL, _(<span class="stringliteral">&quot;Password&quot;</span>));</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160;}</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;<span class="comment"> * gint remmina_protocol_widget_panel_authpwd(RemminaProtocolWidget* gp, RemminaAuthpwdType authpwd_type, gboolean allow_password_saving)</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="comment"> * {</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"> * TRACE_CALL(__func__);</span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> * unsigned pflags;</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment"> * RemminaFile* remminafile = gp-&gt;priv-&gt;remmina_file;</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> * char *password_prompt;</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;<span class="comment"> * int rc;</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;<span class="comment"> * pflags = 0;</span></div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;<span class="comment"> * if (remmina_file_get_filename(remminafile) != NULL &amp;&amp;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;<span class="comment"> * !remminafile-&gt;prevent_saving &amp;&amp; allow_password_saving)</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;<span class="comment"> * pflags |= REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD;</span></div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160;<span class="comment"> * switch (authpwd_type) {</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_PROTOCOL:</span></div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160;<span class="comment"> * password_prompt = g_strdup_printf(_(&quot;%s password&quot;), remmina_file_get_string(remminafile, &quot;protocol&quot;));</span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PWD:</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH password&quot;));</span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"> * case REMMINA_AUTHPWD_TYPE_SSH_PRIVKEY:</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;SSH private key passphrase&quot;));</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"> * default:</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> * password_prompt = g_strdup(_(&quot;Password&quot;));</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"> * break;</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"> * rc = remmina_protocol_widget_dialog(RPWDT_AUTH, gp, pflags, password_prompt);</span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> * g_free(password_prompt);</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"> * return rc;</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> * }</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01751"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31"> 1751</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#aa674c14f3a46dd5eb6b53d6f8ce6bd31">remmina_protocol_widget_panel_authx509</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;{</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373ab2286d6e72e1c7ddd0e760caa78f47ed">RPWDT_AUTHX509</a>, gp, 0, NULL, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;</div><div class="line"><a name="l01759"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a262d75d6b535bd8c623e607805db4084"> 1759</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *fingerprint)</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;{</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; gchar *s;</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</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;trust_all&quot;</span>)) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), fingerprint);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; }</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; _(<span class="stringliteral">&quot;Certificate details:&quot;</span>),</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; _(<span class="stringliteral">&quot;Fingerprint:&quot;</span>), fingerprint,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; _(<span class="stringliteral">&quot;Accept certificate?&quot;</span>));</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; g_free(s);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="comment">/* For compatibility with plugin API: the plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;}</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;</div><div class="line"><a name="l01791"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#acf75fd4bac28a3d53da064b2905f23c1"> 1791</a></span>&#160;gint <a class="code" href="remmina__protocol__widget_8c.html#acf75fd4bac28a3d53da064b2905f23c1">remmina_protocol_widget_panel_changed_certificate</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *subject, <span class="keyword">const</span> gchar *issuer, <span class="keyword">const</span> gchar *new_fingerprint, <span class="keyword">const</span> gchar *old_fingerprint)</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;{</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; gchar *s;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordtype">int</span> rc;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</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;trust_all&quot;</span>)) {</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <a class="code" href="remmina__public_8c.html#a893f0cfe2d694ab700975f4f427ee2f6">remmina_public_send_notification</a>(<span class="stringliteral">&quot;remmina-security-trust-all-id&quot;</span>, _(<span class="stringliteral">&quot;Fingerprint automatically accepted&quot;</span>), new_fingerprint);</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; rc = GTK_RESPONSE_OK;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">return</span> rc;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="comment">// For markup see https://developer.gnome.org/pygtk/stable/pango-markup-language.html</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <span class="stringliteral">&quot;&lt;big&gt;%s&lt;/big&gt;\n\n%s %s\n%s %s\n%s %s\n%s %s\n\n&lt;big&gt;%s&lt;/big&gt;&quot;</span>,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to verify a new SSL certificate.</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; _(<span class="stringliteral">&quot;The certificate changed! Details:&quot;</span>),</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate subject is usually the remote server the user connect to.</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; _(<span class="stringliteral">&quot;Subject:&quot;</span>), subject,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="comment">// TRANSLATORS: The name or email of the entity that have issued the SSL certificate</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; _(<span class="stringliteral">&quot;Issuer:&quot;</span>), issuer,</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; _(<span class="stringliteral">&quot;Old fingerprint:&quot;</span>), old_fingerprint,</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="comment">// TRANSLATORS: An SSL certificate fingerprint, is a hash of a certificate calculated on all certificate&#39;s data and its signature.</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; _(<span class="stringliteral">&quot;New fingerprint:&quot;</span>), new_fingerprint,</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// TRANSLATORS: The user is asked to accept or refuse a new SSL certificate.</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; _(<span class="stringliteral">&quot;Accept changed certificate?&quot;</span>));</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; rc = <a class="code" href="remmina__protocol__widget_8c.html#a858e4756aa97ce424ccf12475c225c54">remmina_protocol_widget_dialog</a>(<a class="code" href="remmina__protocol__widget_8c.html#a9275874ac61d3750aa677a36da714373a622fa08b626cd4dc1faf24c073e15c65">RPWDT_QUESTIONYESNO</a>, gp, 0, s, NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; g_free(s);</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">/* For compatibility with plugin API: The plugin expects GTK_RESPONSE_OK when user confirms new cert */</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <span class="keywordflow">return</span> rc == GTK_RESPONSE_YES ? GTK_RESPONSE_OK : rc;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;}</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;</div><div class="line"><a name="l01825"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a96159bd8e9d70c74967e666e2f188df0"> 1825</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;{</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>);</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;}</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;</div><div class="line"><a name="l01831"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a3fc52d61f77327534286f57e563e0923"> 1831</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;{</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;}</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7c15fa81642c52ef382e1dbe34ffb6ac"> 1837</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a7c15fa81642c52ef382e1dbe34ffb6ac">remmina_protocol_widget_get_domain</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;{</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">return</span> g_strdup(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a1d7cf2572439242b4f70e97b7f71405f">domain</a>);</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;}</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9ed3110b7b030bccd0ff9ed70e86da2d"> 1843</a></span>&#160;gboolean <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160;{</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">return</span> gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160;}</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div><div class="line"><a name="l01849"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9473da27fd10eb46ef8360f9ad4be86d"> 1849</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a9473da27fd10eb46ef8360f9ad4be86d">remmina_protocol_widget_get_cacert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;{</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; gchar *s;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160;</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;}</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a70aecb9af2ea35527e8d058d1d87a0d3"> 1858</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a70aecb9af2ea35527e8d058d1d87a0d3">remmina_protocol_widget_get_cacrl</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160;{</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; gchar *s;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab9632c73b32531b7bea976e10204670b"> 1867</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#ab9632c73b32531b7bea976e10204670b">remmina_protocol_widget_get_clientcert</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160;{</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; gchar *s;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;}</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a08d312825fc0de9f9286279d99f763a1"> 1876</a></span>&#160;gchar *<a class="code" href="remmina__protocol__widget_8c.html#a08d312825fc0de9f9286279d99f763a1">remmina_protocol_widget_get_clientkey</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160;{</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; gchar *s;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">return</span> s &amp;&amp; s[0] ? g_strdup(s) : NULL;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;}</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ab863cc1442a992adfa323bc77ab88504"> 1885</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ab863cc1442a992adfa323bc77ab88504">remmina_protocol_widget_save_cred</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;{</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>;</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; gchar *s;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; gboolean save = FALSE;</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</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="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</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="l01897"></a><span class="lineno"> 1897</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_INIT_SAVE_CRED;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</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#a00585ef650a083f1e8270cbdf05d437f">init_save_creds</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</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="l01900"></a><span class="lineno"> 1900</span>&#160; g_free(d);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; }</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="comment">/* Save username and certificates if any; save the password if it’s requested to do so */</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae3feb5e5dad00109813fac890d913885">username</a>;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, s);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; save = TRUE;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; }</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2c5f3bd1f990157bef034920db49dc6e">cacert</a>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>, s);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; save = TRUE;</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#af9db6b4306852214f3dc2cdc06a635b4">cacrl</a>;</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;cacrl&quot;</span>, s);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; save = TRUE;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; }</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a37bd29fa334e378eff4367d61ee59e05">clientcert</a>;</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientcert&quot;</span>, s);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; save = TRUE;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; s = gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#ae76f074f8613e3f3b01c26eb3ce194f0">clientkey</a>;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="keywordflow">if</span> (s &amp;&amp; s[0]) {</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;clientkey&quot;</span>, s);</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; save = TRUE;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a7c8675e38544a9c393b560b31d165791">save_password</a>) {</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a11a8aa051088d48b389c8385d03a65f7">password</a>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; save = TRUE;</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; }</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="keywordflow">if</span> (save)</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <a class="code" href="remmina__file_8c.html#a8c893a5deec9bc446bd89cc9973416c7">remmina_file_save</a>(remminafile);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;}</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;</div><div class="line"><a name="l01939"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a278e13b53a4fdb65498e00e908edb98d"> 1939</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a278e13b53a4fdb65498e00e908edb98d">remmina_protocol_widget_panel_show_listen</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, gint port)</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160;{</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; gchar *s;</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</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="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</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="l01949"></a><span class="lineno"> 1949</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_PANELSHOWLISTEN;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</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#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</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#a2852b6a6de556164946570c4d7786ece">protocolwidget_panelshowlisten</a>.port = port;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</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="l01953"></a><span class="lineno"> 1953</span>&#160; g_free(d);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; s = g_strdup_printf(</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="comment">// TRANSLATORS: “%i” is a placeholder for a port number. “%s” is a placeholder for a protocol name (VNC).</span></div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; _(<span class="stringliteral">&quot;Listening on port %i for an incoming %s connection…&quot;</span>), port,</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;protocol&quot;</span>));</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, s, NULL, NULL);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; g_free(s);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a70cdb4f879e8bb26b23d05cbbe685640">listen_message_panel</a> = mp;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;}</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;</div><div class="line"><a name="l01968"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a7ed85f4ea19e0660dbf46f4f3dc4b895"> 1968</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a7ed85f4ea19e0660dbf46f4f3dc4b895">remmina_protocol_widget_panel_show_retry</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160;{</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; RemminaMessagePanel *mp;</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</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="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</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="l01977"></a><span class="lineno"> 1977</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_PROTOCOLWIDGET_MPSHOWRETRY;</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</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#af47270db94513116a8c0f7658848c4af">protocolwidget_mpshowretry</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</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="l01980"></a><span class="lineno"> 1980</span>&#160; g_free(d);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; mp = <a class="code" href="remmina__message__panel_8c.html#a7015155d2b1db3e74de4d4d5ef7cca55">remmina_message_panel_new</a>();</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <a class="code" href="remmina__message__panel_8c.html#afae4072b7d8b54392ec08da7d6ead620">remmina_message_panel_setup_progress</a>(mp, _(<span class="stringliteral">&quot;Could not authenticate, attempting reconnection…&quot;</span>), NULL, NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <a class="code" href="rcw_8c.html#ac5eda3a29c88ac88d80b5775e39ffcb4">rco_show_message_panel</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, mp);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;}</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a843c2455a10c9382aee454515f9e7f8b"> 1989</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a843c2455a10c9382aee454515f9e7f8b">remmina_protocol_widget_panel_show</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;{</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;}</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;</div><div class="line"><a name="l01995"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8ef0523afadadc9984d53fb02ecc01ad"> 1995</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a8ef0523afadadc9984d53fb02ecc01ad">remmina_protocol_widget_panel_hide</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;{</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; printf(<span class="stringliteral">&quot;Remmina: The %s function is not implemented, and is left here only for plugin API compatibility.\n&quot;</span>, __func__);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;}</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160;</div><div class="line"><a name="l02001"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d"> 2001</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>)</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;{</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = NULL;</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;}</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div><div class="line"><a name="l02007"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a66263e6e7da79357ceb80d32b191d9f2"> 2007</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a66263e6e7da79357ceb80d32b191d9f2">remmina_protocol_widget_chat_open</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>, <span class="keyword">const</span> gchar *name,</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordtype">void</span> (*on_send)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text), <span class="keywordtype">void</span> (*on_destroy)(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp))</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;{</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a> = <a class="code" href="remmina__chat__window_8c.html#a5e4fa655fddf361fed13bbd759bea24f">remmina_chat_window_new</a>(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp))), name);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;send&quot;</span>, G_CALLBACK(on_send), gp);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>,</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; G_CALLBACK(<a class="code" href="remmina__protocol__widget_8c.html#a04f0a11e50cdbd98ab80984fd5aca16d">remmina_protocol_widget_chat_on_destroy</a>), gp);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; g_signal_connect_swapped(G_OBJECT(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), <span class="stringliteral">&quot;destroy&quot;</span>, G_CALLBACK(on_destroy), gp);</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; gtk_widget_show(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; }</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;}</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a4a3a9ba7422fc302b0b412ac771c9953"> 2023</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a4a3a9ba7422fc302b0b412ac771c9953">remmina_protocol_widget_chat_close</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;{</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>)</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; gtk_widget_destroy(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>);</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;}</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ae2522242b3f39ee84ee8cf75170de0c0"> 2030</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ae2522242b3f39ee84ee8cf75170de0c0">remmina_protocol_widget_chat_receive</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> gchar *text)</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;{</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="comment">/* This function can be called from a non main thread */</span></div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</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="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">/* Allow the execution of this function from a non main thread */</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <a class="code" href="structremmina__masterthread__exec__data.html">RemminaMTExecData</a> *d;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</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="l02040"></a><span class="lineno"> 2040</span>&#160; d-&gt;<a class="code" href="structremmina__masterthread__exec__data.html#ab3d58f7a9847ce04c9dcd3917910fdb1">func</a> = FUNC_CHAT_RECEIVE;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</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#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.gp = <a class="code" href="structremmina__protocol__widget__dialog__mt__data__t.html#aac83645c5474683d37a9a61fcd640b7a">gp</a>;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</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#a6a00bf7132ed6d4923bd239acb073ace">chat_receive</a>.text = text;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</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="l02044"></a><span class="lineno"> 2044</span>&#160; g_free(d);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; }</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <a class="code" href="remmina__chat__window_8c.html#a45724aed5474dd741563ffbf89237022">remmina_chat_window_receive</a>(REMMINA_CHAT_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>), _(<span class="stringliteral">&quot;Server&quot;</span>), text);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; gtk_window_present(GTK_WINDOW(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a006867628dec1d7b23404a690c967f4e">chat_window</a>));</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; }</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;}</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;</div><div class="line"><a name="l02052"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#ac705ffa194e3c3457e9a0a1bd6c79be8"> 2052</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#ac705ffa194e3c3457e9a0a1bd6c79be8">remmina_protocol_widget_setup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, <a class="code" href="struct___remmina_connection_object.html">RemminaConnectionObject</a> *cnnobj)</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;{</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> *<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a> = remminafile;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a> = cnnobj;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160;</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <span class="comment">/* Locate the protocol plugin */</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</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="l02061"></a><span class="lineno"> 2061</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="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span> (!plugin || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#a3d9e2f2eb2594411e6fe63cde443dfb2">init</a> || !plugin-&gt;<a class="code" href="struct___remmina_protocol_plugin.html#ad2e965f3997d21a1e08d365c74e615bd">open_connection</a>) {</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="comment">// TRANSLATORS: “%s” is a placeholder for a protocol name, like “RDP”.</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <a class="code" href="remmina__protocol__widget_8c.html#a95088334da86faf9520383629fff48af">remmina_protocol_widget_set_error</a>(gp, _(<span class="stringliteral">&quot;Install the %s protocol plugin first.&quot;</span>),</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</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="l02067"></a><span class="lineno"> 2067</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = NULL;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; }</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aa7b9f54b6bb8bb01c24a8740b9c3633c">plugin</a> = <a class="code" href="struct___remmina_protocol_widget_priv.html#a2381772c96a26aafc98d347d210dbfe0">plugin</a>;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, FALSE);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a94ef3b8e64d6ced7cd639b7917026f4c">scaler_expand</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scaler_expand&quot;</span>, FALSE);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;}</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;</div><div class="line"><a name="l02077"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a8127b4cc7c278216dff87a7e4a336dfb"> 2077</a></span>&#160;GtkWindow *<a class="code" href="remmina__protocol__widget_8c.html#a8127b4cc7c278216dff87a7e4a336dfb">remmina_protocol_widget_get_gtkwindow</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;{</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#affd4a8e1c05f88299990bb0f3d5d1b9d">rcw_get_gtkwindow</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;}</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;</div><div class="line"><a name="l02082"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a2067c19b160eb43bddda6c6c6e8d6045"> 2082</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a2067c19b160eb43bddda6c6c6e8d6045">remmina_protocol_widget_gtkviewport</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;{</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">return</span> <a class="code" href="rcw_8c.html#a96f1d274dafe5e4953da52beb75f7d14">rcw_get_gtkviewport</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>);</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;}</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;</div><div class="line"><a name="l02087"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a5c2137462d3168e90c812f1ce75a6e62"> 2087</a></span>&#160;GtkWidget *<a class="code" href="remmina__protocol__widget_8c.html#a5c2137462d3168e90c812f1ce75a6e62">remmina_protocol_widget_new</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;{</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <span class="keywordflow">return</span> GTK_WIDGET(g_object_new(REMMINA_TYPE_PROTOCOL_WIDGET, NULL));</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;}</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160;<span class="comment">/* Send one or more keystrokes to a specific widget by firing key-press and</span></div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160;<span class="comment"> * key-release events.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;<span class="comment"> * GdkEventType action can be GDK_KEY_PRESS or GDK_KEY_RELEASE or both to</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="comment"> * press the keys and release them in reversed order. */</span></div><div class="line"><a name="l02096"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a9bcd0d356c7215dc0f791c9744360705"> 2096</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a9bcd0d356c7215dc0f791c9744360705">remmina_protocol_widget_send_keys_signals</a>(GtkWidget *widget, <span class="keyword">const</span> guint *keyvals, <span class="keywordtype">int</span> keyvals_length, GdkEventType action)</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;{</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; GdkEventKey event;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; gboolean result;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keyword">event</span>.window = gtk_widget_get_window(widget);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keyword">event</span>.send_event = TRUE;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="keyword">event</span>.time = GDK_CURRENT_TIME;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keyword">event</span>.state = 0;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keyword">event</span>.length = 0;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keyword">event</span>.string = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <span class="keyword">event</span>.group = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_PRESS) {</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="comment">/* Press the requested buttons */</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_PRESS;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; keyvals_length; i++) {</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Sending keyval: %u, hardware_keycode: %u&quot;</span>, event.keyval, event.hardware_keycode);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-press-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; }</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keywordflow">if</span> (action &amp; GDK_KEY_RELEASE) {</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; <span class="comment">/* Release the requested buttons in reverse order */</span></div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <span class="keyword">event</span>.type = GDK_KEY_RELEASE;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">for</span> (i = (keyvals_length - 1); i &gt;= 0; i--) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <span class="keyword">event</span>.keyval = keyvals[i];</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keyword">event</span>.hardware_keycode = <a class="code" href="remmina__public_8c.html#a95f1d68c7ab3e2a6b158db45f63538fb">remmina_public_get_keycode_for_keyval</a>(keymap, event.keyval);</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; <span class="keyword">event</span>.is_modifier = (int)<a class="code" href="remmina__public_8c.html#a1fac51670815da6a72700a10866c179a">remmina_public_get_modifier_for_keycode</a>(keymap, event.hardware_keycode);</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; g_signal_emit_by_name(G_OBJECT(widget), <span class="stringliteral">&quot;key-release-event&quot;</span>, &amp;event, &amp;result);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; }</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; }</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160;}</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div><div class="line"><a name="l02136"></a><span class="lineno"><a class="line" href="remmina__protocol__widget_8h.html#a14684e3222e6afb1b43d77634a174767"> 2136</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="remmina__protocol__widget_8c.html#a14684e3222e6afb1b43d77634a174767">remmina_protocol_widget_update_remote_resolution</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;{</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; GdkRectangle rect;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; gint w, h;</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; gint wfile, hfile;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78a">RemminaProtocolWidgetResolutionMode</a> res_mode;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> <a class="code" href="struct___remmina_protocol_widget_priv.html#aa37ce53d4329aaaa7c4059c60882a533">scalemode</a>;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; <a class="code" href="rcw_8c.html#aee06df544a91184cba1fe77c6991065a">rco_get_monitor_geometry</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#aae1dfb6ff52460c80a3adf80d4934f67">cnnobj</a>, &amp;rect);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="comment">/* Integrity check: check that we have a cnnwin visible and get t */</span></div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; res_mode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_mode&quot;</span>, <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>);</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; scalemode = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;scale&quot;</span>, <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; wfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_width&quot;</span>, -1);</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; hfile = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a0f1ee4a3ddb7afe518588dce3046f5ec">remmina_file</a>, <span class="stringliteral">&quot;resolution_height&quot;</span>, -1);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; <span class="comment">/* If resolution_mode is non-existent (-1), then we try to calculate it</span></div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="comment"> * as we did before having resolution_mode */</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa415945752acf7689df7cb602ae4e1724">RES_INVALID</a>) {</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keywordflow">if</span> (wfile &lt;= 0 || hfile &lt;= 0)</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a>;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; res_mode = <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aafe10effd553a16b9bac60b6d9b64c2cd">RES_USE_CUSTOM</a>;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; }</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aa60de6896fa451ca072d23fab21dbfeef">RES_USE_INITIAL_WINDOW_SIZE</a> || scalemode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>) {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <span class="comment">/* Use internal window size as remote desktop size */</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; GtkAllocation al;</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; gtk_widget_get_allocation(GTK_WIDGET(gp), &amp;al);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="comment">/* use a multiple of four to mitigate scaling when remote host rounds up */</span></div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; w = al.width - al.width % 4;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; h = al.height - al.height % 4;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span> (w &lt; 10) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; printf(<span class="stringliteral">&quot;Remmina warning: %s RemminaProtocolWidget w=%d h=%d are too small, adjusting to 640x480\n&quot;</span>, __func__, w, h);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; w = 640;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; h = 480;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="comment">/* Due to approximations while GTK calculates scaling, (w x h) may exceed our monitor geometry</span></div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;<span class="comment"> * Adjust to fit. */</span></div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; <span class="keywordflow">if</span> (w &gt; rect.width)</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; w = rect.width;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="keywordflow">if</span> (h &gt; rect.height)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; h = rect.height;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res_mode == <a class="code" href="types_8h.html#a373ddef8221457d86c64830c26d3f78aaf5ff7e2cd480eb2acc5e1520e409202d">RES_USE_CLIENT</a>) {</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; w = rect.width;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; h = rect.height;</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; w = wfile;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; h = hfile;</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; }</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">profile_remote_width</a> = w;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; gp-&gt;<a class="code" href="struct___remmina_protocol_widget.html#a18a9b0b9c8e619b3bdee881d7601f6d6">priv</a>-&gt;<a class="code" href="struct___remmina_protocol_widget_priv.html#a93da102535413a0b3b1b740b582444ca">profile_remote_height</a> = h;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;}</div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a25bcb2ae99449624fed6f770218e3d25"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a25bcb2ae99449624fed6f770218e3d25">remmina_protocol_widget_get_expand</a></div><div class="ttdeci">gboolean remmina_protocol_widget_get_expand(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01420">remmina_protocol_widget.c:1420</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00148">remmina_ssh.h:148</a></div></div>
<div class="ttc" id="struct_mp_run_info_html_a5c8cb7c26289f2afa4fcd87fced6bb91"><div class="ttname"><a href="struct_mp_run_info.html#a5c8cb7c26289f2afa4fcd87fced6bb91">MpRunInfo::destroyed</a></div><div class="ttdeci">gboolean destroyed</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01573">remmina_protocol_widget.c:1573</a></div></div>
@@ -235,7 +235,6 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="structremmina__masterthread__exec__data_html_af47270db94513116a8c0f7658848c4af"><div class="ttname"><a href="structremmina__masterthread__exec__data.html#af47270db94513116a8c0f7658848c4af">remmina_masterthread_exec_data::protocolwidget_mpshowretry</a></div><div class="ttdeci">struct remmina_masterthread_exec_data::@12::@23 protocolwidget_mpshowretry</div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_aaab2e0d0706684150d0ee572e2490a10"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#aaab2e0d0706684150d0ee572e2490a10">_RemminaProtocolWidgetPriv::profile_remote_width</a></div><div class="ttdeci">gint profile_remote_width</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00083">remmina_protocol_widget.c:83</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a9acf045c5a3eec5b7f748678dee0d3ee"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9acf045c5a3eec5b7f748678dee0d3ee">remmina_protocol_widget_desktop_resize</a></div><div class="ttdeci">void remmina_protocol_widget_desktop_resize(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00456">remmina_protocol_widget.c:456</a></div></div>
-<div class="ttc" id="rmnews_8c_html_a175c6dbec04bf34e3f2a5bd791d2d336"><div class="ttname"><a href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a></div><div class="ttdeci">static SoupSession * session</div><div class="ttdef"><b>Definition:</b> <a href="rmnews_8c_source.html#l00076">rmnews.c:76</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="struct___remmina_protocol_widget_priv_html_a6a24677077c069fbbb1f17e747530e1b"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a6a24677077c069fbbb1f17e747530e1b">_RemminaProtocolWidgetPriv::auth_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * auth_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00089">remmina_protocol_widget.c:89</a></div></div>
<div class="ttc" id="struct___remmina_protocol_feature_html_a1826baafd2d7b5dc8a009ef4fcad77e9"><div class="ttname"><a href="struct___remmina_protocol_feature.html#a1826baafd2d7b5dc8a009ef4fcad77e9">_RemminaProtocolFeature::type</a></div><div class="ttdeci">RemminaProtocolFeatureType type</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00073">types.h:73</a></div></div>
@@ -282,7 +281,7 @@ $(document).ready(function(){initNavTree('remmina__protocol__widget_8c_source.ht
<div class="ttc" id="remmina__protocol__widget_8c_html_a262d75d6b535bd8c623e607805db4084"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a262d75d6b535bd8c623e607805db4084">remmina_protocol_widget_panel_new_certificate</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_new_certificate(RemminaProtocolWidget *gp, const gchar *subject, const gchar *issuer, const gchar *fingerprint)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01759">remmina_protocol_widget.c:1759</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_aa41324b7175c46bb42b978332db95d22"><div class="ttname"><a href="remmina__protocol__widget_8c.html#aa41324b7175c46bb42b978332db95d22">remmina_protocol_widget_close_connection</a></div><div class="ttdeci">void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00464">remmina_protocol_widget.c:464</a></div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a57ac13fc4a2653c40e0601183628c0ca"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a57ac13fc4a2653c40e0601183628c0ca">remmina_protocol_widget_plugin_screenshot</a></div><div class="ttdeci">gboolean remmina_protocol_widget_plugin_screenshot(RemminaProtocolWidget *gp, RemminaPluginScreenshotData *rpsd)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00708">remmina_protocol_widget.c:708</a></div></div>
-<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="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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_ae9f52b1a3a545acae8c93007e20ec909"><div class="ttname"><a href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a></div><div class="ttdeci">void remmina_ssh_tunnel_cancel_accept(RemminaSSHTunnel *tunnel)</div></div>
<div class="ttc" id="remmina__protocol__widget_8c_html_a290eb68f0e86de1b7b82e2d98a1494d1"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a290eb68f0e86de1b7b82e2d98a1494d1">remmina_protocol_widget_grab_focus</a></div><div class="ttdeci">void remmina_protocol_widget_grab_focus(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00216">remmina_protocol_widget.c:216</a></div></div>
<div class="ttc" id="struct___remmina_protocol_widget_priv_html_a708ea5b5a9d1f5dcc5ab5bfb3d1a8483"><div class="ttname"><a href="struct___remmina_protocol_widget_priv.html#a708ea5b5a9d1f5dcc5ab5bfb3d1a8483">_RemminaProtocolWidgetPriv::connect_message_panel</a></div><div class="ttdeci">RemminaMessagePanel * connect_message_panel</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l00087">remmina_protocol_widget.c:87</a></div></div>
diff --git a/public/remmina__ssh_8c.html b/public/remmina__ssh_8c.html
index 715ef67b1..603f31c02 100644
--- a/public/remmina__ssh_8c.html
+++ b/public/remmina__ssh_8c.html
@@ -126,13 +126,13 @@ Functions</h2></td></tr>
<tr class="separator:a91225eab16154f145e4d3f30a011d13a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c6a24749cbe8be70b2878de21f57c65"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a> (int fd, int revents, void *userdata)</td></tr>
<tr class="separator:a4c6a24749cbe8be70b2878de21f57c65"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa836e9642f5703d984c65513c7220b56"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a> (ssh_session <a class="el" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)</td></tr>
+<tr class="memitem:aa836e9642f5703d984c65513c7220b56"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a> (ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)</td></tr>
<tr class="separator:aa836e9642f5703d984c65513c7220b56"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a758df1cb9f9c781ed4b6dad9ca19f2f6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a> (ssh_session <a class="el" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel channel, void *userdata)</td></tr>
+<tr class="memitem:a758df1cb9f9c781ed4b6dad9ca19f2f6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a> (ssh_session session, ssh_channel channel, void *userdata)</td></tr>
<tr class="separator:a758df1cb9f9c781ed4b6dad9ca19f2f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a66c667543dd8c4c4f7c8d929863fae"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a> (pthread_t thread)</td></tr>
<tr class="separator:a8a66c667543dd8c4c4f7c8d929863fae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab8f07d5ab2ee8aa8423a11808b6cb100"><td class="memItemLeft" align="right" valign="top">static ssh_channel&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a> (ssh_session <a class="el" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, const char *shost, int sport, void *userdata)</td></tr>
+<tr class="memitem:ab8f07d5ab2ee8aa8423a11808b6cb100"><td class="memItemLeft" align="right" valign="top">static ssh_channel&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a> (ssh_session session, const char *shost, int sport, void *userdata)</td></tr>
<tr class="separator:ab8f07d5ab2ee8aa8423a11808b6cb100"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72a58e416c4eeb9d17eaf76360ebee42"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a> (const gchar *id)</td></tr>
<tr class="separator:a72a58e416c4eeb9d17eaf76360ebee42"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/public/remmina__ssh_8c_source.html b/public/remmina__ssh_8c_source.html
index 50c962d42..17b20e82c 100644
--- a/public/remmina__ssh_8c_source.html
+++ b/public/remmina__ssh_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="title">remmina_ssh.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__ssh_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;<span class="preprocessor">#ifdef HAVE_LIBSSH</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"> 41</span>&#160;<span class="comment">/* To get definitions of NI_MAXHOST and NI_MAXSERV from &lt;netdb.h&gt; */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define _DEFAULT_SOURCE</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"> 44</span>&#160;<span class="comment">/* Define this before stdlib.h to have posix_openpt */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define _XOPEN_SOURCE 600</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">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;libssh/libssh.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &lt;poll.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef HAVE_NETDB_H</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;netdb.h&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef HAVE_ARPA_INET_H</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &lt;arpa/inet.h&gt;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_IN_H</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef HAVE_SYS_SOCKET_H</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#ifdef HAVE_TERMIOS_H</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#include &lt;termios.h&gt;</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#ifdef HAVE_PTY_H</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#include &lt;pty.h&gt;</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#ifdef HAVE_SYS_UN_H</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#include &lt;sys/un.h&gt;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</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="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;</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="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#include &lt;netinet/tcp.h&gt;</span></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="preprocessor">#if defined(__FreeBSD__) || defined(__OpenBSD__)</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#ifndef SOL_TCP</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#define SOL_TCP IPPROTO_TCP</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#endif</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="preprocessor">#endif</span></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"> 109</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">* SSH Base *</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></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;<span class="preprocessor">#define LOCK_SSH(ssh) pthread_mutex_lock(&amp;REMMINA_SSH(ssh)-&gt;ssh_mutex);</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define UNLOCK_SSH(ssh) pthread_mutex_unlock(&amp;REMMINA_SSH(ssh)-&gt;ssh_mutex);</span></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"><a class="line" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694"> 116</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[] =</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; <span class="stringliteral">&quot;.ssh/id_ed25519&quot;</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="stringliteral">&quot;.ssh/id_rsa&quot;</span>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="stringliteral">&quot;.ssh/id_dsa&quot;</span>,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="stringliteral">&quot;.ssh/identity&quot;</span>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; NULL</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"> 125</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">* X11 Channels *</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#define _PATH_UNIX_X &quot;/tmp/.X11-unix/X%d&quot;</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#define _XAUTH_CMD &quot;/usr/bin/xauth list %s 2&gt;/dev/null&quot;</span></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"><a class="line" href="structitem.html"> 131</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structitem.html">item</a> {</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structitem.html#a456c6639914adbd3be8b4da351775d04"> 132</a></span>&#160; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structitem.html#adb779965c903bb950d429e90ebce3162"> 133</a></span>&#160; gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structitem.html#a86aaa250b539e47685bae65032af9ce7"> 134</a></span>&#160; gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262"> 135</a></span>&#160; gboolean <span class="keyword">protected</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb"> 136</a></span>&#160; pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5"> 137</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structitem.html">item</a> *<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;} <a class="code" href="remmina__ssh_8c.html#a1cffe594c5d4e018e846308a11c8d05f">node_t</a>;</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"><a class="line" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792"> 140</a></span>&#160;<a class="code" href="structitem.html">node_t</a> *<a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a> = NULL;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">// Mutex</span></div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3"> 143</a></span>&#160;pthread_mutex_t <a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>;</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="comment">// Linked nodes to manage channel/fd tuples</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, gboolean <span class="keyword">protected</span>, pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">static</span> <a class="code" href="structitem.html">node_t</a> * <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>);</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;<span class="comment">// X11 Display</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(<span class="keywordtype">int</span> gaierr);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *display, <span class="keywordtype">char</span> **_proto, <span class="keywordtype">char</span> **_data);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(<span class="keywordtype">int</span> fd);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(<span class="keywordtype">int</span> display_number);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>();</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;<span class="comment">// Send data to channel</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> revents, <span class="keywordtype">void</span> *userdata);</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"> 161</span>&#160;<span class="comment">// Read data from channel</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *data, uint32_t len, <span class="keywordtype">int</span> is_stderr, <span class="keywordtype">void</span> *userdata);</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;<span class="comment">// EOF&amp;Close channel</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *userdata);</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;<span class="comment">// Close all X11 channel</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>);</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="comment">// X11 Request</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword">static</span> ssh_channel <a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *shost, <span class="keywordtype">int</span> sport, <span class="keywordtype">void</span> *userdata);</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"> 173</span>&#160;<span class="comment">// SSH Channel Callbacks</span></div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb"> 174</a></span>&#160;<span class="keyword">struct </span>ssh_channel_callbacks_struct <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a> =</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; .channel_data_function = <a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; .channel_eof_function = <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; .channel_close_function = <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; .userdata = NULL</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"> 182</span>&#160;<span class="comment">// SSH Event Context</span></div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61"> 183</a></span>&#160;<span class="keywordtype">short</span> <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a> = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL;</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;<span class="comment">// Functions</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1"> 187</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, gboolean <span class="keyword">protected</span>, pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</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; TRACE_CALL(__func__);</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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;insert node - fd_in: %d - fd_out: %d - protected %d&quot;</span>, fd_in, fd_out, <span class="keyword">protected</span>);</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="structitem.html">node_t</a> *node_iterator, *<span class="keyword">new</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (node == NULL) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">/* Calloc ensure that node is full of 0 */</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; node = (<a class="code" href="structitem.html">node_t</a> *) calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="structitem.html">node_t</a>));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; node-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; node-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> = <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; node-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a> = <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a> = <span class="keyword">protected</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; node-&gt;<a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; node-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = NULL;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; node_iterator = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">while</span> (node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> != NULL)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; node_iterator = node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">/* Create the new node */</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">new</span> = (<a class="code" href="structitem.html">node_t</a> *) malloc(<span class="keyword">sizeof</span>(<a class="code" href="structitem.html">node_t</a>));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">new</span>-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">new</span>-&gt;fd_in = <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">new</span>-&gt;fd_out = <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">new</span>-&gt;protected = <span class="keyword">protected</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">new</span>-&gt;thread = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">new</span>-&gt;next = NULL;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = <span class="keyword">new</span>;</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"> 220</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</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;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef"> 224</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>)</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; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;delete node&quot;</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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; <a class="code" href="structitem.html">node_t</a> *current, *previous = NULL;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">for</span> (current = node; current; previous = current, current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (current-&gt;channel != channel)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="keywordflow">if</span> (previous == NULL)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; node = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; previous-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; free(current);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span>;</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; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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="keyword">static</span> <a class="code" href="structitem.html">node_t</a> *</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda"> 251</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>)</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; TRACE_CALL(__func__);</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; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;search node&quot;);</span></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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; <a class="code" href="structitem.html">node_t</a> *current = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> == channel) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;found node - fd_in: %d - fd_out: %d - protected: %d&quot;, current-&gt;fd_in, current-&gt;fd_out, current-&gt;protected);</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> current;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</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; }</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; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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">return</span> NULL;</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="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479"> 276</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> opt;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; socklen_t optlen;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; optlen = <span class="keyword">sizeof</span>(opt);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &amp;opt, &amp;optlen) == -1) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;getsockopt TCP_NODELAY: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">if</span> (opt == 1) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d is TCP_NODELAY&quot;</span>, fd);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</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; opt = 1;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d setting TCP_NODELAY&quot;</span>, fd);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &amp;opt, <span class="keyword">sizeof</span>(opt)) == -1)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;setsockopt TCP_NODELAY: %.100s&quot;</span>, strerror(errno));</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="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b"> 298</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(<span class="keywordtype">int</span> gaierr)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;{</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; TRACE_CALL(__func__);</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> (gaierr == EAI_SYSTEM &amp;&amp; errno != 0)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> strerror(errno);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> gai_strerror(gaierr);</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b"> 308</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *display, <span class="keywordtype">char</span> **_proto, <span class="keywordtype">char</span> **_cookie)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">char</span> cmd[1024], line[512], xdisplay[512];</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> proto[512], cookie[512];</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; FILE *f;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">int</span> ret = 0, r;</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; *_proto = proto;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; *_cookie = cookie;</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; proto[0] = cookie[0] = <span class="charliteral">&#39;\0&#39;</span>;</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; <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">&quot;localhost:&quot;</span>, 10) == 0) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> ((r = snprintf(xdisplay, <span class="keyword">sizeof</span>(xdisplay), <span class="stringliteral">&quot;unix:%s&quot;</span>, display + 10)) &lt; 0 || (<span class="keywordtype">size_t</span>)r &gt;= <span class="keyword">sizeof</span>(xdisplay)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;display name too long. display: %s&quot;</span>, display);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> -1;</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; display = xdisplay;</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;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; snprintf(cmd, <span class="keyword">sizeof</span>(cmd), _XAUTH_CMD, display);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;xauth cmd: %s&quot;</span>, cmd);</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; f = popen(cmd, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (f &amp;&amp; fgets(line, <span class="keyword">sizeof</span>(line), f) &amp;&amp; sscanf(line, <span class="stringliteral">&quot;%*s %511s %511s&quot;</span>, proto, cookie) == 2) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; ret = 0;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; ret = 1;</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; <span class="keywordflow">if</span> (f) pclose(f);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;proto: %s - cookie: %s - ret: %d&quot;</span>, proto, cookie, ret);</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; <span class="keywordflow">return</span> ret;</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;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d"> 348</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname)</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; TRACE_CALL(__func__);</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; <span class="keywordtype">int</span> sock;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">struct </span>sockaddr_un addr;</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; sock = socket(AF_UNIX, SOCK_STREAM, 0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (sock == -1)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;socket: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; memset(&amp;addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; addr.sun_family = AF_UNIX;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; addr.sun_path[0] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; memcpy(addr.sun_path + 1, pathname, strlen(pathname));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&amp;addr, offsetof(<span class="keyword">struct</span> sockaddr_un, sun_path) + 1 + strlen(pathname)) == 0) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;sock: %d&quot;</span>, sock);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> sock;</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; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s: %.100s&quot;</span>, addr.sun_path, strerror(errno));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; close(sock);</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; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;}</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8"> 375</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(<span class="keywordtype">int</span> display_number)</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"> 377</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">char</span> buf[1024];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; snprintf(buf, <span class="keyword">sizeof</span>(buf), _PATH_UNIX_X, display_number);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(buf);</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;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a"> 385</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>()</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> display_number;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">char</span> buf[1024], *cp;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">struct </span>addrinfo hints, *ai, *aitop;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">char</span> strport[NI_MAXSERV];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordtype">int</span> gaierr, sock = 0;</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; <span class="comment">/* Try to open a socket for the local X server. */</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; display = getenv(<span class="stringliteral">&quot;DISPLAY&quot;</span>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (!display) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> -1;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;display: %s&quot;</span>, display);</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="comment">/* Check if it is a unix domain socket. */</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">&quot;unix:&quot;</span>, 5) == 0 || display[0] == <span class="charliteral">&#39;:&#39;</span>) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">/* Connect to the unix domain socket. */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (sscanf(strrchr(display, <span class="charliteral">&#39;:&#39;</span>) + 1, <span class="stringliteral">&quot;%u&quot;</span>, &amp;display_number) != 1) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not parse display number from DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> -1;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;display_number: %d&quot;</span>, display_number);</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"> 414</span>&#160; <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; sock = <a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(display_number);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;socket: %d&quot;</span>, sock);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> -1;</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="comment">/* OK, we now have a connection to the display. */</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> sock;</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;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">/* Connect to an inet socket. */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; strncpy(buf, display, <span class="keyword">sizeof</span>(buf) - 1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; cp = strchr(buf, <span class="charliteral">&#39;:&#39;</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (!cp) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not find &#39;:&#39; in DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> -1;</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; *cp = 0;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (sscanf(cp + 1, <span class="stringliteral">&quot;%u&quot;</span>, &amp;display_number) != 1) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not parse display number from DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> -1;</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;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">/* Look up the host address */</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; memset(&amp;hints, 0, <span class="keyword">sizeof</span>(hints));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; hints.ai_family = AF_INET;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; hints.ai_socktype = SOCK_STREAM;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; snprintf(strport, <span class="keyword">sizeof</span>(strport), <span class="stringliteral">&quot;%u&quot;</span>, 6000 + display_number);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> ((gaierr = getaddrinfo(buf, strport, &amp;hints, &amp;aitop)) != 0) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;%.100s: unknown host. (%s)&quot;</span>, buf, <a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(gaierr));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> -1;</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">for</span> (ai = aitop; ai; ai = ai-&gt;ai_next) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; sock = socket(ai-&gt;ai_family, ai-&gt;ai_socktype, ai-&gt;ai_protocol);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (sock == -1) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;socket: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="comment">/* Connect it to the display. */</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (connect(sock, ai-&gt;ai_addr, ai-&gt;ai_addrlen) == -1) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s port %u: %.100s&quot;</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; close(sock);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="comment">/* Success */</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; freeaddrinfo(aitop);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (!ai) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s port %u: %.100s&quot;</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> -1;</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"> 469</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(sock);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;sock: %d&quot;</span>, sock);</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="keywordflow">return</span> sock;</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;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65"> 477</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> revents, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = (ssh_channel)userdata;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; gchar buf[0x200000];</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; gint sz = 0, ret = 0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; close(fd);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;channel does not exist.&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> -1;</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="keywordflow">if</span> ((revents &amp; POLLIN) || (revents &amp; POLLPRI)) {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; sz = read(fd, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (sz &gt; 0) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; ret = ssh_channel_write(channel, buf, sz);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (ret != sz)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">//TODO: too verbose REMMINA_DEBUG(&quot;ssh_channel_write ret: %d sz: %d&quot;, ret, sz);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sz &lt; 0) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="comment">// TODO: too verbose REMMINA_WARNING(&quot;fd bytes read: %d&quot;, sz);</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Why the hell am I here?&quot;</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; close(fd);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</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; <span class="keywordflow">return</span> -1;</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; }</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; <span class="keywordflow">if</span> ((revents &amp; POLLHUP) || (revents &amp; POLLNVAL) || (revents &amp; POLLERR)) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Closing channel.&quot;</span>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; ret = -1;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</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; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56"> 527</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *data, uint32_t len, <span class="keywordtype">int</span> is_stderr, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; (void)session;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; (void)is_stderr;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// Expecting userdata to be type RemminaSSHShell *, but it is unused</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// in this function.</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; (void)userdata;</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; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; gint fd = temp_node-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; gint sz = 0;</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; sz = write(fd, data, len);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;fd bytes written: %d&quot;, sz);</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> sz;</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;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6"> 547</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; (void)session;</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"> 552</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)userdata;</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; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (temp_node != NULL) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordtype">int</span> fd = temp_node-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</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; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(channel);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; ssh_event_remove_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, fd);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; close(fd);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</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; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Channel closed.&quot;</span>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae"> 571</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;{</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Close all X11 channels&quot;</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="structitem.html">node_t</a> *current = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> == thread &amp;&amp; !current-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; shutdown(current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, SHUT_RDWR);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; close(current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;thread: %d - fd %d closed.&quot;</span>, thread, current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> != current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; shutdown(current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, SHUT_RDWR);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; close(current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;thread: %d - fd %d closed.&quot;</span>, thread, current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</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; current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</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="l00593"></a><span class="lineno"> 593</span>&#160;<span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100"> 594</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *shost, <span class="keywordtype">int</span> sport, <span class="keywordtype">void</span> *userdata)</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;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; (void)shost;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; (void)sport;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)userdata;</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; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = ssh_channel_new(session);</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; <span class="keywordtype">int</span> sock = <a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(channel, sock, sock, FALSE, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</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; ssh_event_add_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, sock, <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a>, <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>, channel);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; ssh_event_add_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, session);</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; ssh_add_channel_callbacks(channel, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</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; <span class="keywordflow">return</span> <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</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;gchar *</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42"> 618</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">id</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span>[0] == <span class="charliteral">&#39;/&#39;</span>) <span class="keywordflow">return</span> g_strdup(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;%s/%s&quot;</span>, g_get_home_dir(), <span class="keywordtype">id</span>);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;}</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;gchar *</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798"> 627</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;{</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; gchar *path;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gint i;</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; <span class="keywordflow">for</span> (i = 0; <a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[i]; i++) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; path = <a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[i]);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (g_file_test(path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; g_free(path);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">return</span> NULL;</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;<span class="keywordtype">void</span></div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553"> 643</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt)</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; <span class="keyword">const</span> gchar *err;</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; err = ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(fmt, err);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</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;<span class="keywordtype">void</span></div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d"> 653</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; va_list args;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; va_end(args);</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;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c"> 664</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; gint ret;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; gint n;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; gint i;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">const</span> gchar *name, *instruction = NULL;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="comment">//gchar *prompt,*ptr;</span></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; ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/* TODO: What if I have an empty password? */</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> == NULL) {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">&quot;OTP code is empty&quot;</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code is empty, returning&quot;</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code has been set to: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; ret = ssh_userauth_kbdint(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">while</span> (ret == SSH_AUTH_INFO) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; name = ssh_userauth_kbdint_getname(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (strlen(name) &gt; 0)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive name: %s&quot;</span>, name);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive name is empty&quot;</span>);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; instruction = ssh_userauth_kbdint_getinstruction(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (strlen(instruction) &gt; 0)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive instruction: %s&quot;</span>, instruction);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive instruction is empty&quot;</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; n = ssh_userauth_kbdint_getnprompts(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; n; i++)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; ssh_userauth_kbdint_setanswer(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, i, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; ret = ssh_userauth_kbdint(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, NULL);</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;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_userauth_kbdint returned %d&quot;</span>, ret);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH keyboard interactive. Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">//Authentication success</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH keyboard interactive. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_INFO:</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">//The server asked some questions. Use ssh_userauth_kbdint_getnprompts() and such.</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticating aagin with SSH keyboard interactive??? %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with keyboard interactive, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="comment">//A serious error happened</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with TOTP/OTP/2FA. %s&quot;</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with TOTP/OTP/2FA. Error is %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;}</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65"> 743</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65">remmina_ssh_auth_password</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; gint ret;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Password authentication&quot;</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Already authenticated&quot;</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</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; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> == NULL) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">&quot;Password is null&quot;</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Password is null, returning&quot;</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</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; ret = ssh_userauth_password(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH password returned: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a416a26d636d492c3530b6c5f0f04a623">REMMINA_SSH_AUTH_AGAIN</a>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with password. Error is %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with SSH password. %s&quot;</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee"> 801</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee">remmina_ssh_auth_pubkey</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;{</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; TRACE_CALL(__func__);</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; ssh_key key = NULL;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; ssh_key cert = NULL;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; gchar pubkey[132] = { 0 }; <span class="comment">// +&quot;.pub&quot;</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; gint ret;</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; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH certificate file: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;File for private SSH key: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> != NULL) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">/* First we import the private key */</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">&quot;&quot;</span>),</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; NULL, NULL, &amp;key) != SSH_OK) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;No saved SSH password supplied. Asking user to enter it.&quot;</span>));</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</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; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Imported private SSH key file&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="comment">/* First we import the certificate */</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; ret = ssh_pki_import_cert_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>, &amp;cert );</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Certificate import returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;SSH certificate cannot be imported. %s&quot;</span>));</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; REMMINA_DEBUG (<span class="stringliteral">&quot;certificate imported correctly&quot;</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="comment">/* We copy th certificate in the private key */</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; ret = ssh_pki_copy_cert_to_privkey(cert, key);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Copying the certificate into a key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;SSH certificate cannot be copied into the private SSH key. %s&quot;</span>));</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; REMMINA_DEBUG (<span class="stringliteral">&quot;%s certificate copied into the private SSH key&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="comment">/* We try to authenticate */</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; ret = ssh_userauth_try_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, cert);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (ret != SSH_AUTH_SUCCESS &amp;&amp; ret != SSH_AUTH_AGAIN ) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Trying to authenticate with the new key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate using SSH certificate. %s&quot;</span>));</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Authentication with a certificate file works, we can authenticate&quot;</span>);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;lbssh &gt;= 0.9.0 is required to authenticate with certificate file&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">/* if it goes well we authenticate (later on) with the key, not the cert*/</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> == NULL) {</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>),</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; _(<span class="stringliteral">&quot;SSH identity file not selected.&quot;</span>));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; g_snprintf(pubkey, <span class="keyword">sizeof</span>(pubkey), <span class="stringliteral">&quot;%s.pub&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</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="comment">/*G_FILE_TEST_EXISTS*/</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (g_file_test(pubkey, G_FILE_TEST_EXISTS)) {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; ret = ssh_pki_import_pubkey_file(pubkey, &amp;key);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Public SSH key cannot be imported. %s&quot;</span>));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; }</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">if</span> (ssh_pki_import_privkey_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">&quot;&quot;</span>),</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; NULL, NULL, &amp;key) != SSH_OK) {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;No saved SSH password supplied. Asking user to enter it.&quot;</span>));</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</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;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</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;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; ret = ssh_userauth_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, key);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with public SSH key returned: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 937</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a"> 938</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a">remmina_ssh_auth_auto_pubkey</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;{</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; TRACE_CALL(__func__);</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; gint ret;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; ret = ssh_userauth_publickey_auto(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : 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; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with public SSH key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate automatically with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate automatically with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796"> 984</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796">remmina_ssh_auth_agent</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;{</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; gint ret;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; ret = ssh_userauth_agent(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH agent returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate automatically with SSH agent. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate automatically with SSH agent. %s&quot;</span>));</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;}</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01030"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67"> 1030</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67">remmina_ssh_auth_gssapi</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; gint ret;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; ret = ssh_userauth_gssapi(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH GSSAPI/Kerberos: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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"> 1044</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b"> 1075</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *password, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; gint method;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> rv = <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1af9e9ce1f259cc359c6e5eb0dbaa090da">REMMINA_SSH_AUTH_NULL</a>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">/* Check known host again to ensure it’s still the original server when user forks</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment"> * a new session from existing one */</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OK: The server is known and has not changed.</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_CHANGED: The server key has changed. Either you are under attack or the administrator changed the key. You HAVE to warn the user about a possible attack.</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OTHER: The server gave use a key of a type while we had an other type recorded. It is a possible attack.</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_UNKNOWN: The server is unknown. User should confirm the public key hash is correct.</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_NOT_FOUND: The known host file does not exist. The host is thus unknown. File will be created if host key is accepted.</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_ERROR: There had been an error checking the host.</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">if</span> (ssh_session_is_known_server(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) != SSH_KNOWN_HOSTS_OK) {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (ssh_is_server_known(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) != SSH_SERVER_KNOWN_OK) {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(ssh, _(<span class="stringliteral">&quot;The public SSH key changed!&quot;</span>));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (password) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (password != ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="keywordflow">if</span> (password != ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>) g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(password);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(password);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; method = ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Methods supported by server: %s%s%s%s%s%s%s&quot;</span>,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; (method &amp; SSH_AUTH_METHOD_NONE) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_NONE &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; (method &amp; SSH_AUTH_METHOD_UNKNOWN) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_UNKNOWN &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; (method &amp; SSH_AUTH_METHOD_PASSWORD) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_PASSWORD &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; (method &amp; SSH_AUTH_METHOD_PUBLICKEY) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_PUBLICKEY &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; (method &amp; SSH_AUTH_METHOD_HOSTBASED) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_HOSTBASED &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; (method &amp; SSH_AUTH_METHOD_INTERACTIVE) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_INTERACTIVE &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; (method &amp; SSH_AUTH_METHOD_GSSAPI_MIC) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_GSSAPI_MIC &quot;</span> : <span class="stringliteral">&quot;&quot;</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; );</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">switch</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>) {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>:</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="comment">/* This authentication method is normally disabled on SSHv2 server. You should use keyboard-interactive mode. */</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_PASSWORD (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>)</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PASSWORD) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_password&quot;</span>);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65">remmina_ssh_auth_password</a>(ssh);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> &amp;&amp; (method &amp; SSH_AUTH_METHOD_INTERACTIVE)) {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="comment">/* SSH server is requesting us to do interactive auth. */</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_interactive after password has failed&quot;</span>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(ssh);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host-based authentication method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User-based authentication method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with SSH password. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>:</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_interactive&quot;</span>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_INTERACTIVE) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(ssh);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host-based authentication method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User-based authentication method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1206</span>&#160; }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with keyboard-interactive. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">break</span>;</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"> 1212</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>:</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_PUBLICKEY (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee">remmina_ssh_auth_pubkey</a>(ssh, gp, remminafile);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; }</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; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support public key authentication&quot;</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a>:</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_AGENT (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796">remmina_ssh_auth_agent</a>(ssh);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; }</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a>:</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_AUTO_PUBLICKEY (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a">remmina_ssh_auth_auto_pubkey</a>(ssh, gp, remminafile);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">/* ssh_agent or none */</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; }</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support public key authentication&quot;</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with automatic public SSH key. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="comment">/* Not yet supported by libssh */</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_HOSTBASED:</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_HOSTBASED)</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="comment">//return remmina_ssh_auth_hostbased;</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a">SSH_AUTH_GSSAPI</a>:</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_GSSAPI (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_GSSAPI_MIC) {</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67">remmina_ssh_auth_gssapi</a>(ssh);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; }</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; }</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">return</span> rv;</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; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support SSH GSSAPI/Kerberos authentication&quot;</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="comment">// We come here after a &quot;break&quot;. ssh-&gt;error should be already set</span></div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;}</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;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;{</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; gchar *keyname;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; gchar *pwdfkey = NULL;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; gchar *message;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; gchar *current_pwd;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; gchar *current_user;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keyword">const</span> gchar *instruction = NULL;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; gint ret;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordtype">size_t</span> len;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; guchar *pubkey;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; ssh_key server_pubkey;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; gboolean disablepasswordstoring;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; gboolean save_password;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; gint attempt;</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; <span class="comment">/* Check if the server’s public key is known */</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OK: The server is known and has not changed.</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_CHANGED: The server key has changed. Either you are under attack or the administrator changed the key. You HAVE to warn the user about a possible attack.</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OTHER: The server gave use a key of a type while we had an other type recorded. It is a possible attack.</span></div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_UNKNOWN: The server is unknown. User should confirm the public key hash is correct.</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_NOT_FOUND: The known host file does not exist. The host is thus unknown. File will be created if host key is accepted.</span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_ERROR: There had been an error checking the host.</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; ret = ssh_session_is_known_server(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OK:</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></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; <span class="comment">/* TODO: These are all wrong, we should deal with each of them */</span></div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_CHANGED:</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OTHER:</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_UNKNOWN:</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_NOT_FOUND:</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; ret = ssh_is_server_known(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_KNOWN_OK:</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="comment">/* fallback to SSH_SERVER_NOT_KNOWN behavior */</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_KNOWN_CHANGED:</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_FOUND_OTHER:</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_NOT_KNOWN:</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_FILE_NOT_FOUND:</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 8, 6)</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">if</span> (ssh_get_server_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &amp;server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch the server\&#39;s public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_server_publickey() has failed&quot;</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1423</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">if</span> (ssh_get_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &amp;server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_publickey() has failed&quot;</span>);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keywordflow">if</span> (ssh_get_publickey_hash(server_pubkey, SSH_PUBLICKEY_HASH_MD5, &amp;pubkey, &amp;len) != 0) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; ssh_key_free(server_pubkey);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch checksum of the public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_publickey_hash() has failed&quot;</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; ssh_key_free(server_pubkey);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; keyname = ssh_get_hexa(pubkey, len);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (ret == SSH_KNOWN_HOSTS_UNKNOWN || ret == SSH_KNOWN_HOSTS_NOT_FOUND) {</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">if</span> (ret == SSH_SERVER_NOT_KNOWN || ret == SSH_SERVER_FILE_NOT_FOUND) {</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; message = g_strdup_printf(<span class="stringliteral">&quot;%s\n%s\n\n%s&quot;</span>,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; _(<span class="stringliteral">&quot;The server is unknown. The public key fingerprint is:&quot;</span>),</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; keyname,</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; _(<span class="stringliteral">&quot;Do you trust the new public key?&quot;</span>));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; message = g_strdup_printf(<span class="stringliteral">&quot;%s\n%s\n\n%s&quot;</span>,</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; _(<span class="stringliteral">&quot;Warning: The server has changed its public key. This means you are either under attack,\n&quot;</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="stringliteral">&quot;or the administrator has changed the key. The new public key fingerprint is:&quot;</span>),</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; keyname,</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; _(<span class="stringliteral">&quot;Do you trust the new public key?&quot;</span>));</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;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(gp, message);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; g_free(message);</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; ssh_string_free_char(keyname);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; ssh_clean_pubkey_hash(&amp;pubkey);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">if</span> (ret != GTK_RESPONSE_YES) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; ssh_session_update_known_hosts(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; ssh_write_knownhost(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_ERROR:</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_ERROR:</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not check list of known SSH hosts. %s&quot;</span>));</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not check list of known SSH hosts&quot;</span>);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keyword">enum</span> { REMMINA_SSH_AUTH_PASSWORD, REMMINA_SSH_AUTH_PKPASSPHRASE, REMMINA_SSH_AUTH_KRBTOKEN, REMMINA_SSH_AUTH_KBDINTERACTIVE } remmina_ssh_auth_type;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">switch</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>) {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>:</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; keyname = _(<span class="stringliteral">&quot;SSH password&quot;</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span> : <span class="stringliteral">&quot;password&quot;</span>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_PASSWORD;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>:</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a>:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a>:</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; keyname = _(<span class="stringliteral">&quot;Password for private SSH key&quot;</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_passphrase&quot;</span> : <span class="stringliteral">&quot;ssh_passphrase&quot;</span>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_PKPASSPHRASE;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a">SSH_AUTH_GSSAPI</a>:</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; keyname = _(<span class="stringliteral">&quot;SSH Kerberos/GSSAPI&quot;</span>);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_kerberos_token&quot;</span> : <span class="stringliteral">&quot;ssh_kerberos_token&quot;</span>;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_KRBTOKEN;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>:</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; instruction = _(<span class="stringliteral">&quot;Enter TOTP/OTP/2FA code&quot;</span>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_KBDINTERACTIVE;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; }</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; disablepasswordstoring = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;</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; current_pwd = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, pwdfkey));</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Try existing password/passphrase first */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; ret = <a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(ssh, current_pwd, gp, remminafile);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Returned %d at 1st attempt with the following message:&quot;</span>, ret);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="comment">/* It seems that functions like ssh_userauth_password() can only be called 3 times</span></div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"> * on a ssh connection. And the 3rd failed attempt will block the calling thread forever.</span></div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"> * So we retry only 2 extra time authentication. */</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordflow">for</span> (attempt = 0;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; attempt &lt; 2 &amp;&amp; ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; attempt++) {</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>)</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Retrying auth because %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_PKPASSPHRASE) {</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(gp,</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; (disablepasswordstoring ? 0 :</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>),</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">&quot;SSH tunnel credentials&quot;</span>) : _(<span class="stringliteral">&quot;SSH credentials&quot;</span>),</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; NULL,</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, pwdfkey),</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; NULL,</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; _(<span class="stringliteral">&quot;Password for private SSH key&quot;</span>));</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; save_password = <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(gp);</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, current_pwd);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, NULL);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; }</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_PASSWORD) {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="comment">/* Ask for user credentials. Username cannot be changed here,</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment"> * because we already sent it when opening the connection */</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Showing panel for password\n&quot;</span>);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; current_user = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span> : <span class="stringliteral">&quot;username&quot;</span>));</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(gp,</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; (disablepasswordstoring ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; | <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; | (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME_READONLY</a>),</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">&quot;SSH tunnel credentials&quot;</span>) : _(<span class="stringliteral">&quot;SSH credentials&quot;</span>),</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; current_user,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; current_pwd,</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; NULL,</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; NULL);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; save_password = <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(gp);</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, current_pwd);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, NULL);</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; !ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a>) {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; g_free(current_user);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; current_user = <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(gp);</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, current_user);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> != NULL) {</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = NULL;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(current_user);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> != NULL) {</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(current_pwd);</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; g_free(current_user);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>;</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; g_free(current_user);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; g_free(current_user);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_KBDINTERACTIVE) {</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Showing panel for keyboard interactive login\n&quot;</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; gp,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; 0,</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; _(<span class="stringliteral">&quot;Keyboard interactive login, TOTP/OTP/2FA&quot;</span>),</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; NULL,</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; NULL,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; NULL,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; instruction);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code is: %s&quot;</span>, current_pwd);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(current_pwd);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; }</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; g_print(<span class="stringliteral">&quot;Unimplemented.&quot;</span>);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; }</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Retrying authentication&quot;</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; ret = <a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(ssh, current_pwd, gp, remminafile);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication attempt n° %d returned %d with the following message:&quot;</span>, attempt + 2, ret);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; }</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; g_free(current_pwd); current_pwd = NULL;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="comment">/* After attempting the max number of times, REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</span></div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> * becomes REMMINA_SSH_AUTH_FATAL_ERROR */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">if</span> (ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a> || ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a416a26d636d492c3530b6c5f0f04a623">REMMINA_SSH_AUTH_AGAIN</a>) {</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Authentication failed&quot;</span>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</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; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;}</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="keywordtype">void</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;remmina_ssh_log_callback(ssh_session <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, <span class="keywordtype">int</span> priority, <span class="keyword">const</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">void</span> *userdata)</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;{</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; REMMINA_DEBUG(message);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;}</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;gboolean</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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"> 1657</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; gint verbosity;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; gint rc;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; gchar *parsed_config;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; socket_t sshsock;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; gint optval;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a> = g_new0(<span class="keyword">struct</span> ssh_callbacks_struct, 1);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">/* Init &amp; startup the SSH session */</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server=%s port=%d is_tunnel=%s tunnel_entrance_host=%s tunnel_entrance_port=%d&quot;</span>,</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>,</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>,</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;Yes&quot;</span> : <span class="stringliteral">&quot;No&quot;</span>,</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = ssh_new();</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="comment">/* Tunnel sanity checks */</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> != NULL) {</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">&quot;Internal error in %s: is_tunnel and tunnel_entrance != NULL&quot;</span>, __func__);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; REMMINA_DEBUG(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> FALSE;</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; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> == NULL) {</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">&quot;Internal error in %s: is_tunnel == false and tunnel_entrance == NULL&quot;</span>, __func__);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; REMMINA_DEBUG(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="comment">/* Set connection host/port */</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>) {</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> &amp;&amp; *ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> != 0) {</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_IDENTITY, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_IDENTITY is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_IDENTITY is not set, by default the files “identity”, “id_dsa” and “id_rsa” are used.&quot;</span>);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_SSH_DIR, g_strdup_printf(<span class="stringliteral">&quot;%s/.ssh&quot;</span>, g_getenv(<span class="stringliteral">&quot;SNAP_USER_COMMON&quot;</span>)));</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; ssh_callbacks_init(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__log_8c.html#a96f5bb72acbdcbf8793b4a5f4a6132b5">remmina_log_running</a>()) {</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; verbosity = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_LOG_VERBOSITY, &amp;verbosity);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>-&gt;log_function = remmina_ssh_log_callback;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="comment">/* Reset libssh legacy userdata. This is a workaround for a libssh bug */</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; ssh_set_log_userdata(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>-&gt;userdata = ssh;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; ssh_set_callbacks(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="comment">/* As the latest parse the ~/.ssh/config file */</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>) == 0) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOST temporary set to the destination host as ssh-&gt;tunnel_entrance_host is 127.0.0.1,&quot;</span>);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</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#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>) {</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">if</span> (ssh_options_parse_config(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL) == 0)</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_config have been correctly parsed&quot;</span>);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot parse ssh_config: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; }</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>) == 0) {</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to ssh-&gt;tunnel_entrance_host is 127.0.0.1,&quot;</span>);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> || *ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> == 0) {</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, &amp;parsed_config);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>)</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_USER returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; }</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_USER is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="comment">/* SSH_OPTIONS_PROXYCOMMAND */</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, &amp;parsed_config);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_PROXYCOMMAND returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_PROXYCOMMAND is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_PROXYCOMMAND does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="comment">/* SSH_OPTIONS_HOSTKEYS */</span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, &amp;parsed_config);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_HOSTKEYS returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOSTKEYS is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOSTKEYS does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="comment">/* SSH_OPTIONS_KEY_EXCHANGE */</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, &amp;parsed_config);</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_KEY_EXCHANGE returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; }</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_KEY_EXCHANGE is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_KEY_EXCHANGE does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="comment">/* SSH_OPTIONS_CIPHERS_C_S */</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, &amp;parsed_config);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_CIPHERS_C_S returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; }</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_CIPHERS_C_S has been set to %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_CIPHERS_C_S does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="comment">/* SSH_OPTIONS_STRICTHOSTKEYCHECK */</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &amp;parsed_config);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = atoi(parsed_config);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_STRICTHOSTKEYCHECK returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_STRICTHOSTKEYCHECK is now %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_STRICTHOSTKEYCHECK does not have a valid value. %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="comment">/* SSH_OPTIONS_COMPRESSION */</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, &amp;parsed_config);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_COMPRESSION returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; }</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_COMPRESSION is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_COMPRESSION does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">if</span> (ssh_connect(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>)) {</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not start SSH session. %s&quot;</span>));</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; }</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="comment">/* Set keepalive on SSH socket, so we can keep firewalls awaken and detect</span></div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;<span class="comment"> * when we loss the tunnel */</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; sshsock = ssh_get_fd(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">if</span> (sshsock &gt;= 0) {</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; optval = 1;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, SOL_SOCKET, SO_KEEPALIVE, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP KeepAlive not set&quot;</span>);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP KeepAlive enabled&quot;</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPIDLE</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPIDLE, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPIDLE not set&quot;</span>);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPIDLE set to %i&quot;</span>, optval);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPCNT</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPCNT, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPCNT not set&quot;</span>);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPCNT set to %i&quot;</span>, optval);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPINTVL</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPINTVL, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPINTVL not set&quot;</span>);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPINTVL set to %i&quot;</span>, optval);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;<span class="preprocessor">#ifdef TCP_USER_TIMEOUT</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_USER_TIMEOUT, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_USER_TIMEOUT not set&quot;</span>);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_USER_TIMEOUT set to %i&quot;</span>, optval);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; }</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <span class="comment">/* Try the &quot;none&quot; authentication */</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="keywordflow">if</span> (ssh_userauth_none(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL) == SSH_AUTH_SUCCESS)</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;}</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;gboolean</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;<a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean is_tunnel)</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;{</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keyword">const</span> gchar *privatekey;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; gchar *s;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a> = NULL;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = NULL;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = NULL;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = is_tunnel;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; pthread_mutex_init(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>, NULL);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = NULL;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = 0;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span> : <span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; privatekey = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_privatekey&quot;</span> : <span class="stringliteral">&quot;ssh_privatekey&quot;</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_certfile&quot;</span> : <span class="stringliteral">&quot;ssh_certfile&quot;</span>));</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="comment">/* The ssh-&gt;server and ssh-&gt;port values */</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (is_tunnel) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We are initializing an SSH tunnel session&quot;</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; 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="l01919"></a><span class="lineno"> 1919</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0) {</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// ssh_tunnel_server empty or invalid, we are opening a tunnel, it means that &quot;Same server at port 22&quot; has been selected</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</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="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; server = <span class="stringliteral">&quot;localhost&quot;</span>;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = 22;</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server:port = %s, server = %s, port = %d&quot;</span>, server, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We are initializing an SSH session&quot;</span>);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</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="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; server = <span class="stringliteral">&quot;localhost&quot;</span>;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server:port = %s, server = %s, port = %d&quot;</span>, server, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; }</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <span class="comment">// ???</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 0, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, NULL);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initialized SSH struct from file with ssh-&gt;server = %s and SSH-&gt;port = %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(username ? username : NULL);</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_auth&quot;</span> : <span class="stringliteral">&quot;ssh_auth&quot;</span>, 0);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_charset&quot;</span>));</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_kex_algorithms&quot;</span> : <span class="stringliteral">&quot;ssh_kex_algorithms&quot;</span>));</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_ciphers&quot;</span> : <span class="stringliteral">&quot;ssh_ciphers&quot;</span>));</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_hostkeytypes&quot;</span> : <span class="stringliteral">&quot;ssh_hostkeytypes&quot;</span>));</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_proxycommand&quot;</span> : <span class="stringliteral">&quot;ssh_proxycommand&quot;</span>));</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_stricthostkeycheck&quot;</span> : <span class="stringliteral">&quot;ssh_stricthostkeycheck&quot;</span>, 0);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; gint c = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_compression&quot;</span> : <span class="stringliteral">&quot;ssh_compression&quot;</span>, 0);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = (c == 1) ? <span class="stringliteral">&quot;yes&quot;</span> : <span class="stringliteral">&quot;no&quot;</span>;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;user: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;password: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;auth: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;charset: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;kex_algorithms: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;ciphers: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;hostkeytypes: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;proxycommand: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;stricthostkeycheck: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;compression: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">/* Public/Private keys */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; s = (privatekey ? g_strdup(privatekey) : <a class="code" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>());</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">if</span> (s) {</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = <a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(s);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;privkeyfile: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; g_free(s);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = NULL;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;}</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;remmina_ssh_init_from_ssh(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh_src)</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;{</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = NULL;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; pthread_mutex_init(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>, NULL);</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> ? ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> : NULL);</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>);</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>;</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>;</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;}</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;gchar *</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<a class="code" href="remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330">remmina_ssh_convert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from)</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;{</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; gchar *to = NULL;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> &amp;&amp; from)</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; to = g_convert(from, -1, <span class="stringliteral">&quot;UTF-8&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, NULL, NULL, NULL);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;}</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;gchar *</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<a class="code" href="remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea">remmina_ssh_unconvert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from)</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;{</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; gchar *to = NULL;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> &amp;&amp; from)</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; to = g_convert(from, -1, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, <span class="stringliteral">&quot;UTF-8&quot;</span>, NULL, NULL, NULL);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;}</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;{</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) {</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Disconnecting SSH session&quot;</span>);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; ssh_disconnect(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; ssh_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; pthread_mutex_destroy(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>);</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; g_free(ssh);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;}</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;<span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;<span class="keyword">struct </span>_RemminaSSHTunnelBuffer {</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; gchar * data;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; gchar * ptr;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; ssize_t len;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;};</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="keyword">static</span> <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;remmina_ssh_tunnel_buffer_new(ssize_t len)</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;{</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *buffer;</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; buffer = g_new(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a>, 1);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; buffer-&gt;data = (gchar *)g_malloc(len);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; buffer-&gt;ptr = buffer-&gt;data;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; buffer-&gt;len = len;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;}</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;remmina_ssh_tunnel_buffer_free(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *buffer)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;{</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="keywordflow">if</span> (buffer) {</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; g_free(buffer-&gt;data);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; g_free(buffer);</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; }</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;}</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;<a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;{</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; tunnel = g_new(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a>, 1);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(tunnel), remminafile, TRUE);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = -1;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = NULL;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = NULL;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = NULL;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = 0;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a> = NULL;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = 0;</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = NULL;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a> = 0;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = NULL;</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = 0;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = NULL;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = NULL;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = NULL;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = NULL;</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = NULL;</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;}</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;remmina_ssh_tunnel_close_all_channels(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;{</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>; i++) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i]);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; ssh_channel_close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; ssh_channel_send_eof(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; ssh_channel_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; }</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>);</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = NULL;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>);</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = NULL;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>);</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = NULL;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> = 0;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = 0;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;}</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;remmina_ssh_tunnel_remove_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint n)</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;{</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; ssh_channel_close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; ssh_channel_send_eof(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; ssh_channel_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n]);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n]);</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>--;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>] = NULL;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;}</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;<span class="comment">/* Register the new channel/socket pair */</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;remmina_ssh_tunnel_add_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint sock)</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;{</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; gint flags;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; gint i;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; i = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>++;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> &gt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a>) {</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <span class="comment">/* Allocate an extra NULL pointer in channels for ssh_select */</span></div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = (ssh_channel *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>,</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> + 1));</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = (gint *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>,</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <span class="keyword">sizeof</span>(gint) * tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = (<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> **)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>,</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; <span class="keyword">sizeof</span>(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *) * tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = (ssh_channel *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>,</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> + 1));</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; }</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i] = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i + 1] = NULL;</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] = sock;</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = NULL;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; flags = fcntl(sock, F_GETFL, 0);</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; fcntl(sock, F_SETFL, flags | O_NONBLOCK);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;}</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;remmina_ssh_tunnel_accept_local_connection(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean blocking)</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;{</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; gint sock, sock_flags;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; sock_flags = fcntl(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, F_GETFL, 0);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; <span class="keywordflow">if</span> (blocking)</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; sock_flags &amp;= ~O_NONBLOCK;</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; sock_flags |= O_NONBLOCK;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; fcntl(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, F_SETFL, sock_flags);</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; <span class="comment">/* Accept a local connection */</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; sock = accept(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, NULL, NULL);</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; g_free(REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(<span class="stringliteral">&quot;Local socket not accepted&quot;</span>);</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; }</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; }</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;}</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;<span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;remmina_ssh_tunnel_create_forward_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;{</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; channel = ssh_channel_new(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23">ssh</a>.<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not create channel. %s&quot;</span>));</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160; }</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="comment">/* Request the SSH server to connect to the destination */</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel destination is %s&quot;</span>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>);</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_forward(channel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>, 0) != SSH_OK) {</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not connect to SSH tunnel. %s&quot;</span>));</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; }</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;}</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;remmina_ssh_tunnel_main_thread_proc(gpointer data)</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;{</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; gchar *ptr;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; ssize_t len = 0, lenw = 0;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; fd_set <span class="keyword">set</span>;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; <span class="keyword">struct </span>timeval timeout;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; g_autoptr(GDateTime) t1 = NULL;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; g_autoptr(GDateTime) t2 = NULL;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; GTimeSpan diff; <span class="comment">// microseconds</span></div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; gboolean first = TRUE;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; gboolean disconnected;</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; gint sock;</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; gint maxfd;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; gint i;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; gint ret;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; t1 = t2 = g_date_time_new_now_local();</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; <span class="keywordflow">switch</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a>) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>:</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; sock = remmina_ssh_tunnel_accept_local_connection(tunnel, TRUE);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; <span class="keywordflow">if</span> (tunnel)</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; }</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; close(sock);</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>:</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160; <span class="comment">/* Detect the next available port starting from 6010 on the server */</span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; <span class="keywordflow">for</span> (i = 10; i &lt;= MAX_X_DISPLAY_NUMBER; i++) {</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)-&gt;session, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = i;</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; }</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)-&gt;session, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = i;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; }</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> &lt; 1) {</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &amp;&amp;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; !(*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>)) {</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>:</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, NULL)) {</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, NULL)) {</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; }</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &amp;&amp;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; !(*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>)) {</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; }</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; }</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a> = 10240;</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = g_malloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>);</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; <span class="comment">/* Start the tunnel data transmission */</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) {</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a> ||</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="keywordflow">if</span> (first) {</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; first = FALSE;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)-&gt;session, 15000, &amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;The server did not respond.&quot;</span>));</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; }</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; <span class="comment">/* For reverse tunnel, we only need one connection. */</span></div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; ssh_channel_cancel_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; ssh_forward_cancel(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; }</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> != <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; <span class="comment">/* Poll once per some period of time if no incoming connections.</span></div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;<span class="comment"> * Don’t try to poll continuously as it will significantly slow down the loop */</span></div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; t1 = g_date_time_new_now_local();</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; diff = g_date_time_difference(t1, t2) * 10000000</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; + g_date_time_difference(t1, t2) / 100000;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <span class="keywordflow">if</span> (diff &gt; 1) {</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Polling tunnel channels&quot;</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)-&gt;session, 0, &amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="keywordflow">if</span> (channel == NULL)</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; t2 = t1;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; }</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; g_date_time_unref(t1);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; g_date_time_unref(t2);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <span class="keywordflow">if</span> (channel) {</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; sin.sin_family = AF_INET;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; sin.sin_port = htons(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&amp;sin, <span class="keyword">sizeof</span>(sin)) &lt; 0) {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; _(<span class="stringliteral">&quot;Cannot connect to local port %i.&quot;</span>), tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>);</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; close(sock);</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; sock = -1;</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; }</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; sock = <a class="code" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public_open_xdisplay</a>(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; <span class="keywordflow">if</span> (sock &gt;= 0)</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; <span class="comment">/* Failed to create unix socket. Will this happen? */</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; }</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; channel = NULL;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; }</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> &lt;= 0)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; <span class="comment">/* No more connections. We should quit */</span></div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; timeout.tv_sec = 0;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; timeout.tv_usec = 200000;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; FD_ZERO(&amp;<span class="keyword">set</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; maxfd = 0;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>; i++) {</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] &gt; maxfd)</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; maxfd = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i];</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; FD_SET(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &amp;<span class="keyword">set</span>);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; ret = ssh_select(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>, maxfd + 1, &amp;<span class="keyword">set</span>, &amp;timeout);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; <span class="keywordflow">if</span> (ret == SSH_EINTR) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">if</span> (ret == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; i = 0;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> &amp;&amp; i &lt; tunnel-&gt;num_channels) {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; disconnected = FALSE;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; <span class="keywordflow">if</span> (FD_ISSET(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &amp;<span class="keyword">set</span>)) {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; <span class="keywordflow">while</span> (!disconnected &amp;&amp;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; (len = read(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>)) &gt; 0) {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; <span class="keywordflow">for</span> (ptr = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, lenw = 0; len &gt; 0; len -= lenw, ptr += lenw) {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; lenw = ssh_channel_write(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], (<span class="keywordtype">char</span> *)ptr, len);</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <span class="keywordflow">if</span> (lenw &lt;= 0) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not write to SSH channel. %s&quot;</span>));</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; }</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; <span class="keywordflow">if</span> (len == 0) {</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not read from tunnel listening socket. %s&quot;</span>));</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; }</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;tunnel disconnected because %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; i++;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; }</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; i = 0;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> &amp;&amp; i &lt; tunnel-&gt;num_channels) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; disconnected = FALSE;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; len = ssh_channel_poll(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], 0);</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; <span class="keywordflow">if</span> (len == SSH_ERROR || len == SSH_EOF) {</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not poll SSH channel. %s&quot;</span>));</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = remmina_ssh_tunnel_buffer_new(len);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; len = ssh_channel_read_nonblocking(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;data, len, 0);</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keywordflow">if</span> (len &lt;= 0) {</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not read SSH channel in a non-blocking way. %s&quot;</span>));</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len = len;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; }</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; }</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <span class="keywordflow">if</span> (!disconnected &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]) {</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keywordflow">for</span> (lenw = 0; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len &gt; 0;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len -= lenw, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;ptr += lenw) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; lenw = write(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;ptr, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; <span class="keywordflow">if</span> (lenw == -1 &amp;&amp; errno == EAGAIN &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>)</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="comment">/* Sometimes we cannot write to a socket (always EAGAIN), probably because it’s internal</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="comment"> * buffer is full. We need read the pending bytes from the socket first. so here we simply</span></div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;<span class="comment"> * break, leave the buffer there, and continue with other data */</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; <span class="keywordflow">if</span> (lenw &lt;= 0) {</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not send data to tunnel listening socket. %s&quot;</span>));</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; }</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len &lt;= 0) {</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = NULL;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; }</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; }</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Connection to SSH tunnel dropped. %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; }</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; i++;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; sock = remmina_ssh_tunnel_accept_local_connection(tunnel, FALSE);</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; <span class="keywordflow">if</span> (sock &gt; 0) {</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not open new SSH connection. %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; close(sock);</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <span class="comment">/* Leave thread loop */</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; }</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <span class="comment">/* Notify tunnel owner of disconnection */</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;}</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;<span class="keyword">static</span> gboolean remmina_ssh_notify_tunnel_main_thread_end(gpointer data)</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;{</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; <span class="comment">/* Ask tunnel owner to destroy tunnel object */</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a>);</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;}</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;remmina_ssh_tunnel_main_thread(gpointer data)</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;{</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; remmina_ssh_tunnel_main_thread_proc(data);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &lt; 0 || tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0 || !tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; }</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; <span class="comment">/* Do after tunnel thread cleanup */</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; IDLE_ADD((GSourceFunc)remmina_ssh_notify_tunnel_main_thread_end, (gpointer)tunnel);</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;}</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;{</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &gt;= 0) {</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; }</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;}</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;gboolean</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *host, gint port, gint local_port)</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;{</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; gint sock;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; gint sockopt = 1;</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>;</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a> = g_strdup(host);</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = port;</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> == 0) {</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Assign a destination port.&quot;</span>));</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; }</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; <span class="comment">/* Create the server socket that listens on the local port */</span></div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not create socket.&quot;</span>));</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; }</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &amp;sockopt, <span class="keyword">sizeof</span>(sockopt));</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; sin.sin_family = AF_INET;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; sin.sin_port = htons(local_port);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; <span class="keywordflow">if</span> (bind(sock, (<span class="keyword">struct</span> sockaddr *)&amp;sin, <span class="keyword">sizeof</span>(sin))) {</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not bind server socket to local port.&quot;</span>));</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; close(sock);</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; }</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keywordflow">if</span> (listen(sock, 1)) {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not listen to local port.&quot;</span>));</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; close(sock);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; }</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = sock;</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; }</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;}</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;gboolean</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean bindlocalhost)</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;{</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>;</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> = bindlocalhost;</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;}</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;gboolean</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint port, gint local_port)</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;{</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = port;</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a> = local_port;</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; }</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;}</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;gboolean</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;<a class="code" href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh_tunnel_terminated</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;{</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; <span class="keywordflow">return</span> tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;}</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;<a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;{</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;tunnel-&gt;thread = %lX\n&quot;</span>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>);</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; thread = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>;</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="keywordflow">if</span> (thread != 0) {</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; pthread_cancel(thread);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; pthread_join(thread, NULL);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; }</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a> &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> &gt; 0) {</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; ssh_channel_cancel_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, 6000 + tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>);</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; ssh_forward_cancel(REMMINA_SSH(tunnel)-&gt;session, NULL, 6000 + tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>);</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; }</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &gt;= 0) {</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; }</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>);</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>((<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *)tunnel);</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;}</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;<span class="comment">* SSH SFTP *</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;<a class="code" href="remmina__ssh_8h.html#a3d7138d9cbbe44aea15440436ce85d6e">remmina_sftp_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;{</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; <a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp;</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; sftp = g_new(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a>, 1);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(sftp), remminafile, FALSE);</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;}</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188">remmina_sftp_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;{</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160; <a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp;</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; sftp = g_new(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a>, 1);</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; remmina_ssh_init_from_ssh(REMMINA_SSH(sftp), ssh);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;}</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160;</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;gboolean</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2">remmina_sftp_open</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp)</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;{</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = sftp_new(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e">ssh</a>.<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="keywordflow">if</span> (!sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>) {</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">&quot;Could not create SFTP session. %s&quot;</span>));</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; }</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; <span class="keywordflow">if</span> (sftp_init(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>)) {</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">&quot;Could not start SFTP session. %s&quot;</span>));</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; }</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;}</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160;<a class="code" href="remmina__ssh_8h.html#aaaf171c31b73f06f1026239253d9f6b9">remmina_sftp_free</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp)</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;{</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; <span class="keywordflow">if</span> (sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>) {</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; sftp_free(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; }</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(REMMINA_SSH(sftp));</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;}</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;<span class="comment">* SSH Shell *</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;<a class="code" href="remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d">remmina_ssh_shell_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;{</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell;</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; shell = g_new0(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a>, 1);</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(shell), remminafile, FALSE);</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = -1;</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = -1;</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;exec&quot;</span>));</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;run_line&quot;</span>));</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;}</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae0792ddb4adcaafefc1a4604cefdd8f4">remmina_ssh_shell_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;{</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; shell = g_new0(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a>, 1);</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; remmina_ssh_init_from_ssh(REMMINA_SSH(shell), ssh);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160;</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = -1;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = -1;</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;}</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;remmina_ssh_call_exit_callback_on_main_thread(gpointer data)</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;{</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160;</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)data;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>)</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>);</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; <span class="keywordflow">if</span> (shell) {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(shell);</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; shell = NULL;</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; }</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;}</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;remmina_ssh_shell_thread(gpointer data)</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;{</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)data;</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>;</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; remminafile = <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(gp);</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; gint ret;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160; gchar *filename;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <span class="keyword">const</span> gchar *dir;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; <span class="keyword">const</span> gchar *sshlogname;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; FILE *fp = NULL;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160; <span class="comment">//gint screen;</span></div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; <span class="keywordflow">if</span> ((channel = ssh_channel_new(REMMINA_SSH(shell)-&gt;session)) == NULL ||</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; ssh_channel_open_session(channel)) {</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">&quot;Could not open channel. %s&quot;</span>));</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="keywordflow">if</span> (channel) ssh_channel_free(channel);</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; }</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; ssh_channel_request_pty(channel);</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; <span class="comment">// SSH Callbacks</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="keyword">struct </span>ssh_callbacks_struct cb =</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; .channel_open_request_x11_function = <a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>,</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; .userdata = shell,</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; };</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</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_forward_x11&quot;</span>, FALSE)) {</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; ssh_callbacks_init(&amp;cb);</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; ssh_set_callbacks(REMMINA_SSH(shell)-&gt;session, &amp;cb);</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display = getenv(<span class="stringliteral">&quot;DISPLAY&quot;</span>);</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; <span class="keywordtype">char</span> *proto = NULL, *cookie = NULL;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(display, &amp;proto, &amp;cookie) != 0) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Using fake authentication data for X11 forwarding&quot;</span>);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; proto = NULL;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; cookie = NULL;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;proto: %s - cookie: %s&quot;</span>, proto, cookie);</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; ret = ssh_channel_request_x11(channel, 0, proto, cookie, 0);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>[0]) {</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Requesting an SSH exec channel&quot;</span>);</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; ret = ssh_channel_request_exec(channel, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>);</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Requesting an SSH shell channel&quot;</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; ret = ssh_channel_request_shell(channel);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; }</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Could not request shell&quot;</span>);</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">&quot;Could not request shell. %s&quot;</span>));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; }</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; GFile *rf = g_file_new_for_path(remminafile-&gt;filename);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</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;sshlogfolder&quot;</span>) == NULL)</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; dir = 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="l02935"></a><span class="lineno"> 2935</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; dir = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;sshlogfolder&quot;</span>);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</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;sshlogname&quot;</span>) == NULL)</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; sshlogname = g_strconcat(g_file_get_basename(rf), <span class="stringliteral">&quot;.&quot;</span>, <span class="stringliteral">&quot;log&quot;</span>, NULL);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; sshlogname = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;sshlogname&quot;</span>);</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; sshlogname = <a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(remminafile, sshlogname);</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; filename = g_strconcat(dir, <span class="stringliteral">&quot;/&quot;</span>, sshlogname, NULL);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</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;sshsavesession&quot;</span>, FALSE)) {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving session log to %s&quot;</span>, filename);</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; fp = fopen(filename, <span class="stringliteral">&quot;w&quot;</span>);</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; }</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; g_free(filename);</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Run_line: %s&quot;</span>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; <span class="keywordflow">if</span> (!shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>[0]) {</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; <span class="comment">//TODO: Confirm assumption - assuming null terminated gchar string</span></div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; ssh_channel_write(channel, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>, (gint)strlen(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>));</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; ssh_channel_write(channel, <span class="stringliteral">&quot;\n&quot;</span>, (gint)1); <span class="comment">//TODO: Test this</span></div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Run_line written to channel&quot;</span>);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; }</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; <span class="comment">// Create new event context.</span></div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a> = ssh_event_new();</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a> == NULL) {</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t get a event.&quot;</span>, __func__);</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; }</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;shell-&gt;slave: %d&quot;</span>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <span class="comment">// Add the fd to the event and assign it the callback.</span></div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; <span class="keywordflow">if</span> (ssh_event_add_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a>, <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>, channel) != SSH_OK) {</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t add an fd to the event.&quot;</span>, __func__);</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; }</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; <span class="comment">// Remove the poll handle from session and assign them to the event.</span></div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; <span class="keywordflow">if</span> (ssh_event_add_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)-&gt;session) != SSH_OK) {</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t add the session to the event.&quot;</span>, __func__);</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; }</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TRUE, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; <span class="comment">// Initializes the ssh_callbacks_struct.</span></div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>.userdata = &amp;shell;</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; ssh_callbacks_init(&amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; <span class="comment">// Set the channel callback functions.</span></div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; ssh_set_channel_callbacks(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; <span class="keywordflow">do</span> {</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; ssh_event_dopoll(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, 1000);</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; } <span class="keywordflow">while</span>(!ssh_channel_is_closed(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>));</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160;</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> = TRUE;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <span class="comment">// Remove socket fd from event context.</span></div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; ret = ssh_event_remove_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove socket fd from event context: %d&quot;</span>, ret);</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160;</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; <span class="comment">// Remove session object from event context.</span></div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; ret = ssh_event_remove_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)-&gt;session);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove session object from event context: %d&quot;</span>, ret);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; <span class="comment">// Free event context.</span></div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; ssh_event_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Free event context&quot;</span>);</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="comment">// Remove channel callback.</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ret = ssh_remove_channel_callbacks(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove channel callback: %d&quot;</span>, ret);</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</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;sshsavesession&quot;</span>, FALSE))</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; fclose(fp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a> = NULL;</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160;</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>)</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; IDLE_ADD((GSourceFunc)remmina_ssh_call_exit_callback_on_main_thread, (gpointer)shell);</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;}</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160;gboolean</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b">remmina_ssh_shell_open</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> exit_callback, gpointer data)</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;{</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; gchar *slavedevice;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; <span class="keyword">struct </span>termios stermios;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = posix_openpt(O_RDWR | O_NOCTTY);</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> == -1 ||</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; grantpt(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>) == -1 ||</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; unlockpt(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>) == -1 ||</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; (slavedevice = ptsname(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>)) == NULL ||</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = open(slavedevice, O_RDWR | O_NOCTTY)) &lt; 0) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; REMMINA_SSH(shell)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not create PTY device.&quot;</span>));</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; }</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <span class="comment">/* As per libssh documentation */</span></div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; tcgetattr(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, &amp;stermios);</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; stermios.c_iflag &amp;= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160; stermios.c_oflag &amp;= ~OPOST;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; stermios.c_lflag &amp;= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; stermios.c_cflag &amp;= ~(CSIZE | PARENB);</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; stermios.c_cflag |= CS8;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; tcsetattr(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TCSANOW, &amp;stermios);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a> = exit_callback;</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a> = data;</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160; <span class="comment">/* Once the process started, we should always TRUE and assume the pthread will be created always */</span></div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; pthread_create(&amp;shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>, NULL, remmina_ssh_shell_thread, shell);</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;}</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160;<a class="code" href="remmina__ssh_8h.html#ac2d3f3b6550e4d1fe4caabe1df6af508">remmina_ssh_shell_set_size</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, gint columns, gint rows)</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;{</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>)</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; ssh_channel_change_pty_size(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, columns, rows);</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;}</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;<a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell)</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160;{</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; <span class="comment">//pthread_t thread = shell-&gt;thread;</span></div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a> = NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> = TRUE;</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cancelling the shell thread if needed&quot;</span>);</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) {</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; pthread_cancel(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) pthread_join(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>, NULL);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; }</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; close(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>) {</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; g_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>);</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> = NULL;</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; }</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>) {</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; g_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>);</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> = NULL;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; }</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; <span class="comment">/* It’s not necessary to close shell-&gt;slave since the other end (vte) will close it */</span>;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(REMMINA_SSH(shell));</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;}</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBSSH */</span><span class="preprocessor"></span></div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
+<a href="remmina__ssh_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;<span class="preprocessor">#ifdef HAVE_LIBSSH</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"> 41</span>&#160;<span class="comment">/* To get definitions of NI_MAXHOST and NI_MAXSERV from &lt;netdb.h&gt; */</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#define _DEFAULT_SOURCE</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"> 44</span>&#160;<span class="comment">/* Define this before stdlib.h to have posix_openpt */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define _XOPEN_SOURCE 600</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">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#define LIBSSH_STATIC 1</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;libssh/libssh.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &lt;gtk/gtk.h&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &lt;poll.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#ifdef HAVE_NETDB_H</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;netdb.h&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef HAVE_ARPA_INET_H</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#include &lt;arpa/inet.h&gt;</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_IN_H</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef HAVE_SYS_SOCKET_H</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor">#ifdef HAVE_ERRNO_H</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#ifdef HAVE_TERMIOS_H</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#include &lt;termios.h&gt;</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="preprocessor">#ifdef HAVE_PTY_H</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#include &lt;pty.h&gt;</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#ifdef HAVE_SYS_UN_H</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor">#include &lt;sys/un.h&gt;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</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="l00090"></a><span class="lineno"> 90</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="l00091"></a><span class="lineno"> 91</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="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="remmina__ssh_8h.html">remmina_ssh.h</a>&quot;</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</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="l00095"></a><span class="lineno"> 95</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="l00096"></a><span class="lineno"> 96</span>&#160;</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="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#include &lt;netinet/tcp.h&gt;</span></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="preprocessor">#if defined(__FreeBSD__) || defined(__OpenBSD__)</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#ifndef SOL_TCP</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor">#define SOL_TCP IPPROTO_TCP</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#endif</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="preprocessor">#endif</span></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"> 109</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">* SSH Base *</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></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;<span class="preprocessor">#define LOCK_SSH(ssh) pthread_mutex_lock(&amp;REMMINA_SSH(ssh)-&gt;ssh_mutex);</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define UNLOCK_SSH(ssh) pthread_mutex_unlock(&amp;REMMINA_SSH(ssh)-&gt;ssh_mutex);</span></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"><a class="line" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694"> 116</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> gchar *<a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[] =</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; <span class="stringliteral">&quot;.ssh/id_ed25519&quot;</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="stringliteral">&quot;.ssh/id_rsa&quot;</span>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="stringliteral">&quot;.ssh/id_dsa&quot;</span>,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="stringliteral">&quot;.ssh/identity&quot;</span>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; NULL</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"> 125</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">* X11 Channels *</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#define _PATH_UNIX_X &quot;/tmp/.X11-unix/X%d&quot;</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor">#define _XAUTH_CMD &quot;/usr/bin/xauth list %s 2&gt;/dev/null&quot;</span></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"><a class="line" href="structitem.html"> 131</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structitem.html">item</a> {</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structitem.html#a456c6639914adbd3be8b4da351775d04"> 132</a></span>&#160; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structitem.html#adb779965c903bb950d429e90ebce3162"> 133</a></span>&#160; gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structitem.html#a86aaa250b539e47685bae65032af9ce7"> 134</a></span>&#160; gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262"> 135</a></span>&#160; gboolean <span class="keyword">protected</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb"> 136</a></span>&#160; pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5"> 137</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structitem.html">item</a> *<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;} <a class="code" href="remmina__ssh_8c.html#a1cffe594c5d4e018e846308a11c8d05f">node_t</a>;</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"><a class="line" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792"> 140</a></span>&#160;<a class="code" href="structitem.html">node_t</a> *<a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a> = NULL;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">// Mutex</span></div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3"> 143</a></span>&#160;pthread_mutex_t <a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>;</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="comment">// Linked nodes to manage channel/fd tuples</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, gboolean <span class="keyword">protected</span>, pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">static</span> <a class="code" href="structitem.html">node_t</a> * <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>);</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;<span class="comment">// X11 Display</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(<span class="keywordtype">int</span> gaierr);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *display, <span class="keywordtype">char</span> **_proto, <span class="keywordtype">char</span> **_data);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(<span class="keywordtype">int</span> fd);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(<span class="keywordtype">int</span> display_number);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>();</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;<span class="comment">// Send data to channel</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> revents, <span class="keywordtype">void</span> *userdata);</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"> 161</span>&#160;<span class="comment">// Read data from channel</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>(ssh_session session, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *data, uint32_t len, <span class="keywordtype">int</span> is_stderr, <span class="keywordtype">void</span> *userdata);</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;<span class="comment">// EOF&amp;Close channel</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>(ssh_session session, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *userdata);</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;<span class="comment">// Close all X11 channel</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>);</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="comment">// X11 Request</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="keyword">static</span> ssh_channel <a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>(ssh_session session, <span class="keyword">const</span> <span class="keywordtype">char</span> *shost, <span class="keywordtype">int</span> sport, <span class="keywordtype">void</span> *userdata);</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"> 173</span>&#160;<span class="comment">// SSH Channel Callbacks</span></div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb"> 174</a></span>&#160;<span class="keyword">struct </span>ssh_channel_callbacks_struct <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a> =</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; .channel_data_function = <a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; .channel_eof_function = <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; .channel_close_function = <a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; .userdata = NULL</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"> 182</span>&#160;<span class="comment">// SSH Event Context</span></div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61"> 183</a></span>&#160;<span class="keywordtype">short</span> <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a> = POLLIN | POLLPRI | POLLERR | POLLHUP | POLLNVAL;</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;<span class="comment">// Functions</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1"> 187</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, gint <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, gboolean <span class="keyword">protected</span>, pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</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; TRACE_CALL(__func__);</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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;insert node - fd_in: %d - fd_out: %d - protected %d&quot;</span>, fd_in, fd_out, <span class="keyword">protected</span>);</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="structitem.html">node_t</a> *node_iterator, *<span class="keyword">new</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (node == NULL) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">/* Calloc ensure that node is full of 0 */</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; node = (<a class="code" href="structitem.html">node_t</a> *) calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="structitem.html">node_t</a>));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; node-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; node-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> = <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; node-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a> = <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a> = <span class="keyword">protected</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; node-&gt;<a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; node-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = NULL;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; node_iterator = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">while</span> (node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> != NULL)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; node_iterator = node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">/* Create the new node */</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">new</span> = (<a class="code" href="structitem.html">node_t</a> *) malloc(<span class="keyword">sizeof</span>(<a class="code" href="structitem.html">node_t</a>));</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">new</span>-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">new</span>-&gt;fd_in = <a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">new</span>-&gt;fd_out = <a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">new</span>-&gt;protected = <span class="keyword">protected</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">new</span>-&gt;thread = <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keyword">new</span>-&gt;next = NULL;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; node_iterator-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = <span class="keyword">new</span>;</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"> 220</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</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;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef"> 224</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>)</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; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;delete node&quot;</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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; <a class="code" href="structitem.html">node_t</a> *current, *previous = NULL;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">for</span> (current = node; current; previous = current, current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (current-&gt;channel != channel)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="keywordflow">if</span> (previous == NULL)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; node = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; previous-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a> = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; free(current);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span>;</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; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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="keyword">static</span> <a class="code" href="structitem.html">node_t</a> *</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda"> 251</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>)</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; TRACE_CALL(__func__);</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; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;search node&quot;);</span></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; pthread_mutex_lock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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; <a class="code" href="structitem.html">node_t</a> *current = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> == channel) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;found node - fd_in: %d - fd_out: %d - protected: %d&quot;, current-&gt;fd_in, current-&gt;fd_out, current-&gt;protected);</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> current;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</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; }</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; pthread_mutex_unlock(&amp;<a class="code" href="remmina__ssh_8c.html#a4acff8232e4aec9cd5c6dc200ac55ef3">mutex</a>);</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">return</span> NULL;</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="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479"> 276</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> opt;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; socklen_t optlen;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; optlen = <span class="keyword">sizeof</span>(opt);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span> (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &amp;opt, &amp;optlen) == -1) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;getsockopt TCP_NODELAY: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span>;</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; <span class="keywordflow">if</span> (opt == 1) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d is TCP_NODELAY&quot;</span>, fd);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</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; opt = 1;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d setting TCP_NODELAY&quot;</span>, fd);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &amp;opt, <span class="keyword">sizeof</span>(opt)) == -1)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;setsockopt TCP_NODELAY: %.100s&quot;</span>, strerror(errno));</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="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b"> 298</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(<span class="keywordtype">int</span> gaierr)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;{</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; TRACE_CALL(__func__);</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> (gaierr == EAI_SYSTEM &amp;&amp; errno != 0)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> strerror(errno);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> gai_strerror(gaierr);</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b"> 308</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *display, <span class="keywordtype">char</span> **_proto, <span class="keywordtype">char</span> **_cookie)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;{</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">char</span> cmd[1024], line[512], xdisplay[512];</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> proto[512], cookie[512];</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; FILE *f;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">int</span> ret = 0, r;</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; *_proto = proto;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; *_cookie = cookie;</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; proto[0] = cookie[0] = <span class="charliteral">&#39;\0&#39;</span>;</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; <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">&quot;localhost:&quot;</span>, 10) == 0) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> ((r = snprintf(xdisplay, <span class="keyword">sizeof</span>(xdisplay), <span class="stringliteral">&quot;unix:%s&quot;</span>, display + 10)) &lt; 0 || (<span class="keywordtype">size_t</span>)r &gt;= <span class="keyword">sizeof</span>(xdisplay)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;display name too long. display: %s&quot;</span>, display);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> -1;</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; display = xdisplay;</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;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; snprintf(cmd, <span class="keyword">sizeof</span>(cmd), _XAUTH_CMD, display);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;xauth cmd: %s&quot;</span>, cmd);</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; f = popen(cmd, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span> (f &amp;&amp; fgets(line, <span class="keyword">sizeof</span>(line), f) &amp;&amp; sscanf(line, <span class="stringliteral">&quot;%*s %511s %511s&quot;</span>, proto, cookie) == 2) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; ret = 0;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; ret = 1;</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; <span class="keywordflow">if</span> (f) pclose(f);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;proto: %s - cookie: %s - ret: %d&quot;</span>, proto, cookie, ret);</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; <span class="keywordflow">return</span> ret;</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;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d"> 348</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *pathname)</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; TRACE_CALL(__func__);</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; <span class="keywordtype">int</span> sock;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">struct </span>sockaddr_un addr;</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; sock = socket(AF_UNIX, SOCK_STREAM, 0);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (sock == -1)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;socket: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; memset(&amp;addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; addr.sun_family = AF_UNIX;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; addr.sun_path[0] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; memcpy(addr.sun_path + 1, pathname, strlen(pathname));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&amp;addr, offsetof(<span class="keyword">struct</span> sockaddr_un, sun_path) + 1 + strlen(pathname)) == 0) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;sock: %d&quot;</span>, sock);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> sock;</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; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s: %.100s&quot;</span>, addr.sun_path, strerror(errno));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; close(sock);</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; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;}</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8"> 375</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(<span class="keywordtype">int</span> display_number)</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"> 377</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">char</span> buf[1024];</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; snprintf(buf, <span class="keyword">sizeof</span>(buf), _PATH_UNIX_X, display_number);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8c.html#a686f8ba4a7816c7e33e7bde3b10f723d">remmina_ssh_connect_local_xsocket_path</a>(buf);</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;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a"> 385</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>()</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; TRACE_CALL(__func__);</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> display_number;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">char</span> buf[1024], *cp;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">struct </span>addrinfo hints, *ai, *aitop;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordtype">char</span> strport[NI_MAXSERV];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordtype">int</span> gaierr, sock = 0;</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; <span class="comment">/* Try to open a socket for the local X server. */</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; display = getenv(<span class="stringliteral">&quot;DISPLAY&quot;</span>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (!display) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> -1;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;display: %s&quot;</span>, display);</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="comment">/* Check if it is a unix domain socket. */</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span> (strncmp(display, <span class="stringliteral">&quot;unix:&quot;</span>, 5) == 0 || display[0] == <span class="charliteral">&#39;:&#39;</span>) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">/* Connect to the unix domain socket. */</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (sscanf(strrchr(display, <span class="charliteral">&#39;:&#39;</span>) + 1, <span class="stringliteral">&quot;%u&quot;</span>, &amp;display_number) != 1) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not parse display number from DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> -1;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;display_number: %d&quot;</span>, display_number);</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"> 414</span>&#160; <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; sock = <a class="code" href="remmina__ssh_8c.html#a6a8653ae6e45acff9e6b01aeda5f45e8">remmina_ssh_connect_local_xsocket</a>(display_number);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;socket: %d&quot;</span>, sock);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">return</span> -1;</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="comment">/* OK, we now have a connection to the display. */</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> sock;</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;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">/* Connect to an inet socket. */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; strncpy(buf, display, <span class="keyword">sizeof</span>(buf) - 1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; cp = strchr(buf, <span class="charliteral">&#39;:&#39;</span>);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (!cp) {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not find &#39;:&#39; in DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> -1;</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; *cp = 0;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (sscanf(cp + 1, <span class="stringliteral">&quot;%u&quot;</span>, &amp;display_number) != 1) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Could not parse display number from DISPLAY: %.100s&quot;</span>, display);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> -1;</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;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">/* Look up the host address */</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; memset(&amp;hints, 0, <span class="keyword">sizeof</span>(hints));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; hints.ai_family = AF_INET;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; hints.ai_socktype = SOCK_STREAM;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; snprintf(strport, <span class="keyword">sizeof</span>(strport), <span class="stringliteral">&quot;%u&quot;</span>, 6000 + display_number);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span> ((gaierr = getaddrinfo(buf, strport, &amp;hints, &amp;aitop)) != 0) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;%.100s: unknown host. (%s)&quot;</span>, buf, <a class="code" href="remmina__ssh_8c.html#a17089d163f313f0acc43615ba6f29d9b">remmina_ssh_ssh_gai_strerror</a>(gaierr));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> -1;</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">for</span> (ai = aitop; ai; ai = ai-&gt;ai_next) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">/* Create a socket. */</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; sock = socket(ai-&gt;ai_family, ai-&gt;ai_socktype, ai-&gt;ai_protocol);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (sock == -1) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;socket: %.100s&quot;</span>, strerror(errno));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="comment">/* Connect it to the display. */</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">if</span> (connect(sock, ai-&gt;ai_addr, ai-&gt;ai_addrlen) == -1) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s port %u: %.100s&quot;</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; close(sock);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="comment">/* Success */</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; freeaddrinfo(aitop);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (!ai) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;connect %.100s port %u: %.100s&quot;</span>, buf, 6000 + display_number, strerror(errno));</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> -1;</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"> 469</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1daf0b140ecf3ef9665d1c5d4c0ec479">remmina_ssh_set_nodelay</a>(sock);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;sock: %d&quot;</span>, sock);</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="keywordflow">return</span> sock;</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;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65"> 477</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">int</span> revents, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = (ssh_channel)userdata;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; gchar buf[0x200000];</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; gint sz = 0, ret = 0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; close(fd);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;channel does not exist.&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> -1;</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="keywordflow">if</span> ((revents &amp; POLLIN) || (revents &amp; POLLPRI)) {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; sz = read(fd, buf, <span class="keyword">sizeof</span>(buf));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">if</span> (sz &gt; 0) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; ret = ssh_channel_write(channel, buf, sz);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (ret != sz)</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">//TODO: too verbose REMMINA_DEBUG(&quot;ssh_channel_write ret: %d sz: %d&quot;, ret, sz);</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sz &lt; 0) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="comment">// TODO: too verbose REMMINA_WARNING(&quot;fd bytes read: %d&quot;, sz);</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Why the hell am I here?&quot;</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; close(fd);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</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; <span class="keywordflow">return</span> -1;</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; }</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; <span class="keywordflow">if</span> ((revents &amp; POLLHUP) || (revents &amp; POLLNVAL) || (revents &amp; POLLERR)) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Closing channel.&quot;</span>);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; ret = -1;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</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; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</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;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56"> 527</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a>(ssh_session session, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *data, uint32_t len, <span class="keywordtype">int</span> is_stderr, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; (void)session;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; (void)is_stderr;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// Expecting userdata to be type RemminaSSHShell *, but it is unused</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// in this function.</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; (void)userdata;</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; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; gint fd = temp_node-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; gint sz = 0;</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; sz = write(fd, data, len);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// TODO: too verbose REMMINA_DEBUG(&quot;fd bytes written: %d&quot;, sz);</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> sz;</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;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6"> 547</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a758df1cb9f9c781ed4b6dad9ca19f2f6">remmina_ssh_ch_close_cb</a>(ssh_session session, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, <span class="keywordtype">void</span> *userdata)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; (void)session;</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"> 552</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)userdata;</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; <a class="code" href="structitem.html">node_t</a> *temp_node = <a class="code" href="remmina__ssh_8c.html#af39f90e2343e62348226aed0d7496dda">remmina_ssh_search_item</a>(channel);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (temp_node != NULL) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordtype">int</span> fd = temp_node-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>;</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; <span class="keywordflow">if</span> (!temp_node-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="remmina__ssh_8c.html#a998d504fc1ae83365d905bd0b72e07ef">remmina_ssh_delete_item</a>(channel);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; ssh_event_remove_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, fd);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; shutdown(fd, SHUT_RDWR);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; close(fd);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;fd %d closed.&quot;</span>, fd);</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; }</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Channel closed.&quot;</span>);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae"> 571</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;{</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; TRACE_CALL(__func__);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Close all X11 channels&quot;</span>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="structitem.html">node_t</a> *current = <a class="code" href="remmina__ssh_8c.html#a85d5bd836f83ef1dbbcf4657f32e0792">node</a>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">while</span> (current != NULL) {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a> == thread &amp;&amp; !current-&gt;<a class="code" href="structitem.html#a38ed39bc82590b07b2746c48a2eef262">protected</a>) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; shutdown(current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>, SHUT_RDWR);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; close(current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;thread: %d - fd %d closed.&quot;</span>, thread, current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (current-&gt;<a class="code" href="structitem.html#adb779965c903bb950d429e90ebce3162">fd_in</a> != current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; shutdown(current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>, SHUT_RDWR);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; close(current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;thread: %d - fd %d closed.&quot;</span>, thread, current-&gt;<a class="code" href="structitem.html#a86aaa250b539e47685bae65032af9ce7">fd_out</a>);</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; current = current-&gt;<a class="code" href="structitem.html#a975a1b37d9e003e1abb2a505474894b5">next</a>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</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="l00593"></a><span class="lineno"> 593</span>&#160;<span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100"> 594</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>(ssh_session session, <span class="keyword">const</span> <span class="keywordtype">char</span> *shost, <span class="keywordtype">int</span> sport, <span class="keywordtype">void</span> *userdata)</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;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; (void)shost;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; (void)sport;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)userdata;</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; ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a> = ssh_channel_new(session);</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; <span class="keywordtype">int</span> sock = <a class="code" href="remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a">remmina_ssh_x11_connect_display</a>();</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(channel, sock, sock, FALSE, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</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; ssh_event_add_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, sock, <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a>, <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>, channel);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; ssh_event_add_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, session);</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; ssh_add_channel_callbacks(channel, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</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; <span class="keywordflow">return</span> <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</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;gchar *</div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a72a58e416c4eeb9d17eaf76360ebee42"> 618</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">id</span>)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">id</span>[0] == <span class="charliteral">&#39;/&#39;</span>) <span class="keywordflow">return</span> g_strdup(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(<span class="stringliteral">&quot;%s/%s&quot;</span>, g_get_home_dir(), <span class="keywordtype">id</span>);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;}</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;gchar *</div><div class="line"><a name="l00627"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#ab6d8bdad543b3caead2b2b0339484798"> 627</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;{</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; gchar *path;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gint i;</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; <span class="keywordflow">for</span> (i = 0; <a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[i]; i++) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; path = <a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(<a class="code" href="remmina__ssh_8c.html#a8920b4663823da39661a108f04b33694">common_identities</a>[i]);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (g_file_test(path, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS))</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> path;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; g_free(path);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">return</span> NULL;</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;<span class="keywordtype">void</span></div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#abc556f0a4335083436f6e19c204fa553"> 643</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt)</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; <span class="keyword">const</span> gchar *err;</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; err = ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(fmt, err);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;}</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;<span class="keywordtype">void</span></div><div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#a1f3297263703b4259c1c9607d710995d"> 653</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *fmt, ...)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;{</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; va_list args;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; va_start(args, fmt);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_vprintf(fmt, args);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; va_end(args);</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;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00664"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c"> 664</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; gint ret;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; gint n;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; gint i;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">const</span> gchar *name, *instruction = NULL;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="comment">//gchar *prompt,*ptr;</span></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; ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">/* TODO: What if I have an empty password? */</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> == NULL) {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">&quot;OTP code is empty&quot;</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code is empty, returning&quot;</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code has been set to: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; ret = ssh_userauth_kbdint(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, NULL);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">while</span> (ret == SSH_AUTH_INFO) {</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; name = ssh_userauth_kbdint_getname(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span> (strlen(name) &gt; 0)</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive name: %s&quot;</span>, name);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive name is empty&quot;</span>);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; instruction = ssh_userauth_kbdint_getinstruction(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (strlen(instruction) &gt; 0)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive instruction: %s&quot;</span>, instruction);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH kbd-interactive instruction is empty&quot;</span>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; n = ssh_userauth_kbdint_getnprompts(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; n; i++)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; ssh_userauth_kbdint_setanswer(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, i, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; ret = ssh_userauth_kbdint(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, NULL);</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;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_userauth_kbdint returned %d&quot;</span>, ret);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH keyboard interactive. Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="comment">//Authentication success</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH keyboard interactive. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_INFO:</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">//The server asked some questions. Use ssh_userauth_kbdint_getnprompts() and such.</span></div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticating aagin with SSH keyboard interactive??? %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with keyboard interactive, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="comment">//A serious error happened</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with TOTP/OTP/2FA. %s&quot;</span>));</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with TOTP/OTP/2FA. Error is %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;}</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65"> 743</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65">remmina_ssh_auth_password</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; gint ret;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Password authentication&quot;</span>);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; ret = SSH_AUTH_ERROR;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Already authenticated&quot;</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</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; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> == NULL) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, <span class="stringliteral">&quot;Password is null&quot;</span>);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Password is null, returning&quot;</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; }</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; ret = ssh_userauth_password(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH password returned: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with SSH password, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a416a26d636d492c3530b6c5f0f04a623">REMMINA_SSH_AUTH_AGAIN</a>;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with password. Error is %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with SSH password. %s&quot;</span>));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00801"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee"> 801</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee">remmina_ssh_auth_pubkey</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;{</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; TRACE_CALL(__func__);</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; ssh_key key = NULL;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; ssh_key cert = NULL;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; gchar pubkey[132] = { 0 }; <span class="comment">// +&quot;.pub&quot;</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; gint ret;</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; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</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; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH certificate file: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;File for private SSH key: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> != NULL) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">/* First we import the private key */</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (ssh_pki_import_privkey_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">&quot;&quot;</span>),</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; NULL, NULL, &amp;key) != SSH_OK) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;No saved SSH password supplied. Asking user to enter it.&quot;</span>));</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</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; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Imported private SSH key file&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="comment">/* First we import the certificate */</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; ret = ssh_pki_import_cert_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>, &amp;cert );</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Certificate import returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;SSH certificate cannot be imported. %s&quot;</span>));</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; REMMINA_DEBUG (<span class="stringliteral">&quot;certificate imported correctly&quot;</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="comment">/* We copy th certificate in the private key */</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; ret = ssh_pki_copy_cert_to_privkey(cert, key);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Copying the certificate into a key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;SSH certificate cannot be copied into the private SSH key. %s&quot;</span>));</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; REMMINA_DEBUG (<span class="stringliteral">&quot;%s certificate copied into the private SSH key&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="comment">/* We try to authenticate */</span></div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; ret = ssh_userauth_try_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, cert);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (ret != SSH_AUTH_SUCCESS &amp;&amp; ret != SSH_AUTH_AGAIN ) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Trying to authenticate with the new key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate using SSH certificate. %s&quot;</span>));</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Authentication with a certificate file works, we can authenticate&quot;</span>);</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;lbssh &gt;= 0.9.0 is required to authenticate with certificate file&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="comment">/* if it goes well we authenticate (later on) with the key, not the cert*/</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> == NULL) {</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>),</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; _(<span class="stringliteral">&quot;SSH identity file not selected.&quot;</span>));</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; g_snprintf(pubkey, <span class="keyword">sizeof</span>(pubkey), <span class="stringliteral">&quot;%s.pub&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</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="comment">/*G_FILE_TEST_EXISTS*/</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (g_file_test(pubkey, G_FILE_TEST_EXISTS)) {</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; ret = ssh_pki_import_pubkey_file(pubkey, &amp;key);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Public SSH key cannot be imported. %s&quot;</span>));</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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; }</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">if</span> (ssh_pki_import_privkey_file(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : <span class="stringliteral">&quot;&quot;</span>),</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; NULL, NULL, &amp;key) != SSH_OK) {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> == NULL || ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;No saved SSH password supplied. Asking user to enter it.&quot;</span>));</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</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;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</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;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; ret = ssh_userauth_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, key);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; ssh_key_free(key);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; ssh_key_free(cert);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with public SSH key returned: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 937</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a"> 938</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a">remmina_ssh_auth_auto_pubkey</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;{</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; TRACE_CALL(__func__);</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; gint ret;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; ret = ssh_userauth_publickey_auto(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL, (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> ? ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> : 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; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with public SSH key returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate automatically with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate automatically with public SSH key. %s&quot;</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l00984"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796"> 984</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796">remmina_ssh_auth_agent</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;{</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; gint ret;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; ret = ssh_userauth_agent(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL);</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; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH agent returned: %d&quot;</span>, ret);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate automatically with SSH agent. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate automatically with SSH agent. %s&quot;</span>));</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;}</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="keyword">static</span> <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01030"></a><span class="lineno"><a class="line" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67"> 1030</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67">remmina_ssh_auth_gssapi</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; gint ret;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; ret = ssh_userauth_gssapi(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication with SSH GSSAPI/Kerberos: %d&quot;</span>, ret);</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; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_PARTIAL:</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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"> 1044</span>&#160; <span class="comment">//You&#39;ve been partially authenticated, you still have to use another method.</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Another method is required. %d&quot;</span>, ret);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a> = TRUE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_SUCCESS:</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">//The public key is accepted.</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_AGAIN:</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="comment">//In nonblocking mode, you&#39;ve got to call this again later.</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authenticated with public SSH key, Requested to authenticate again. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_DENIED:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_ERROR:</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="comment">//A serious error happened.</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01075"></a><span class="lineno"><a class="line" href="remmina__ssh_8h.html#aad84c6609cb431d48121ae5e0902441b"> 1075</a></span>&#160;<a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *password, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; gint method;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a> rv = <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1af9e9ce1f259cc359c6e5eb0dbaa090da">REMMINA_SSH_AUTH_NULL</a>;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">/* Check known host again to ensure it’s still the original server when user forks</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment"> * a new session from existing one */</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OK: The server is known and has not changed.</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_CHANGED: The server key has changed. Either you are under attack or the administrator changed the key. You HAVE to warn the user about a possible attack.</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OTHER: The server gave use a key of a type while we had an other type recorded. It is a possible attack.</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_UNKNOWN: The server is unknown. User should confirm the public key hash is correct.</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_NOT_FOUND: The known host file does not exist. The host is thus unknown. File will be created if host key is accepted.</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_ERROR: There had been an error checking the host.</span></div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">if</span> (ssh_session_is_known_server(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) != SSH_KNOWN_HOSTS_OK) {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">if</span> (ssh_is_server_known(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) != SSH_SERVER_KNOWN_OK) {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(ssh, _(<span class="stringliteral">&quot;The public SSH key changed!&quot;</span>));</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</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;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (password) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (password != ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="keywordflow">if</span> (password != ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>) g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(password);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(password);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; method = ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL);</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Methods supported by server: %s%s%s%s%s%s%s&quot;</span>,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; (method &amp; SSH_AUTH_METHOD_NONE) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_NONE &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; (method &amp; SSH_AUTH_METHOD_UNKNOWN) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_UNKNOWN &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; (method &amp; SSH_AUTH_METHOD_PASSWORD) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_PASSWORD &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; (method &amp; SSH_AUTH_METHOD_PUBLICKEY) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_PUBLICKEY &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; (method &amp; SSH_AUTH_METHOD_HOSTBASED) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_HOSTBASED &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; (method &amp; SSH_AUTH_METHOD_INTERACTIVE) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_INTERACTIVE &quot;</span> : <span class="stringliteral">&quot;&quot;</span>,</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; (method &amp; SSH_AUTH_METHOD_GSSAPI_MIC) ? <span class="stringliteral">&quot;SSH_AUTH_METHOD_GSSAPI_MIC &quot;</span> : <span class="stringliteral">&quot;&quot;</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; );</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">switch</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>) {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>:</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="comment">/* This authentication method is normally disabled on SSHv2 server. You should use keyboard-interactive mode. */</span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_PASSWORD (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a>)</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ae5b80d959def61ac57ee6a919ca87266">REMMINA_SSH_AUTH_SUCCESS</a>;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PASSWORD) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_password&quot;</span>);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#ad6f3f5c196175412049af0c440414e65">remmina_ssh_auth_password</a>(ssh);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> &amp;&amp; (method &amp; SSH_AUTH_METHOD_INTERACTIVE)) {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="comment">/* SSH server is requesting us to do interactive auth. */</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_interactive after password has failed&quot;</span>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(ssh);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</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; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host-based authentication method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User-based authentication method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with SSH password. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>:</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH using remmina_ssh_auth_interactive&quot;</span>);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_INTERACTIVE) {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a976d3c1a549c17f00a64eb05d4e0823c">remmina_ssh_auth_interactive</a>(ssh);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host-based authentication method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User-based authentication method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1206</span>&#160; }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with keyboard-interactive. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">break</span>;</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"> 1212</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>:</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_PUBLICKEY (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a06d627fbf258c617a3ff3bd7b8086dee">remmina_ssh_auth_pubkey</a>(ssh, gp, remminafile);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; }</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; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support public key authentication&quot;</span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with public SSH key. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a>:</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_AGENT (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a6e57a1b5ba4a3886c4cb79ece8894796">remmina_ssh_auth_agent</a>(ssh);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; }</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a>:</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_AUTO_PUBLICKEY (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#aa8aee72091b09cde34c0e0efadde719a">remmina_ssh_auth_auto_pubkey</a>(ssh, gp, remminafile);</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="comment">/* ssh_agent or none */</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_PUBLICKEY) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; }</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; }</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support public key authentication&quot;</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with automatic public SSH key. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="preprocessor">#if 0</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="comment">/* Not yet supported by libssh */</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_HOSTBASED:</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_HOSTBASED)</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="comment">//return remmina_ssh_auth_hostbased;</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a">SSH_AUTH_GSSAPI</a>:</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_AUTH_GSSAPI (%d)&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">if</span> (method &amp; SSH_AUTH_METHOD_GSSAPI_MIC) {</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; rv = <a class="code" href="remmina__ssh_8c.html#a0eb19f950b34b360b28243a0b1883d67">remmina_ssh_auth_gssapi</a>(ssh);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">if</span> (rv == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a>) {</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>) {</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">switch</span> (ssh_userauth_list(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL)) {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PASSWORD:</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>;</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_PUBLICKEY:</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_HOSTBASED:</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Host based auth method not implemented: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_INTERACTIVE:</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="comment">//REMMINA_DEBUG(&quot;Interactive auth method not implemented: %d&quot;, ssh-&gt;auth);</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keywordflow">case</span> SSH_AUTH_METHOD_UNKNOWN:</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; }</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; }</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; <span class="keywordflow">return</span> rv;</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; <span class="comment">// The real error here should be: &quot;The SSH server %s:%d does not support SSH GSSAPI/Kerberos authentication&quot;</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not authenticate with SSH GSSAPI/Kerberos. %s&quot;</span>), <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;User auth method not supported: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1361</span>&#160;</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="comment">// We come here after a &quot;break&quot;. ssh-&gt;error should be already set</span></div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;}</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;<span class="keyword">enum</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1">remmina_ssh_auth_result</a></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<a class="code" href="remmina__ssh_8h.html#acf69725720378340e1a51c87e7638a7f">remmina_ssh_auth_gui</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;{</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; gchar *keyname;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; gchar *pwdfkey = NULL;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; gchar *message;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; gchar *current_pwd;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; gchar *current_user;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keyword">const</span> gchar *instruction = NULL;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; gint ret;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordtype">size_t</span> len;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; guchar *pubkey;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; ssh_key server_pubkey;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; gboolean disablepasswordstoring;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; gboolean save_password;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; gint attempt;</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; <span class="comment">/* Check if the server’s public key is known */</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="comment">/* TODO: Add error checking</span></div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OK: The server is known and has not changed.</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_CHANGED: The server key has changed. Either you are under attack or the administrator changed the key. You HAVE to warn the user about a possible attack.</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_OTHER: The server gave use a key of a type while we had an other type recorded. It is a possible attack.</span></div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_UNKNOWN: The server is unknown. User should confirm the public key hash is correct.</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_NOT_FOUND: The known host file does not exist. The host is thus unknown. File will be created if host key is accepted.</span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment"> * SSH_KNOWN_HOSTS_ERROR: There had been an error checking the host.</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; ret = ssh_session_is_known_server(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OK:</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></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; <span class="comment">/* TODO: These are all wrong, we should deal with each of them */</span></div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_CHANGED:</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_OTHER:</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_UNKNOWN:</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_NOT_FOUND:</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; ret = ssh_is_server_known(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <span class="keywordflow">switch</span> (ret) {</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_KNOWN_OK:</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">break</span>; <span class="comment">/* ok */</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="comment">/* fallback to SSH_SERVER_NOT_KNOWN behavior */</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_KNOWN_CHANGED:</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_FOUND_OTHER:</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_NOT_KNOWN:</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_FILE_NOT_FOUND:</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 8, 6)</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keywordflow">if</span> (ssh_get_server_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &amp;server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch the server\&#39;s public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_server_publickey() has failed&quot;</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</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"> 1423</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">if</span> (ssh_get_publickey(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, &amp;server_pubkey) != SSH_OK) {</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_publickey() has failed&quot;</span>);</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; }</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keywordflow">if</span> (ssh_get_publickey_hash(server_pubkey, SSH_PUBLICKEY_HASH_MD5, &amp;pubkey, &amp;len) != 0) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; ssh_key_free(server_pubkey);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not fetch checksum of the public SSH key. %s&quot;</span>));</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_get_publickey_hash() has failed&quot;</span>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; }</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; ssh_key_free(server_pubkey);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; keyname = ssh_get_hexa(pubkey, len);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (ret == SSH_KNOWN_HOSTS_UNKNOWN || ret == SSH_KNOWN_HOSTS_NOT_FOUND) {</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">if</span> (ret == SSH_SERVER_NOT_KNOWN || ret == SSH_SERVER_FILE_NOT_FOUND) {</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; message = g_strdup_printf(<span class="stringliteral">&quot;%s\n%s\n\n%s&quot;</span>,</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; _(<span class="stringliteral">&quot;The server is unknown. The public key fingerprint is:&quot;</span>),</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; keyname,</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; _(<span class="stringliteral">&quot;Do you trust the new public key?&quot;</span>));</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; message = g_strdup_printf(<span class="stringliteral">&quot;%s\n%s\n\n%s&quot;</span>,</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; _(<span class="stringliteral">&quot;Warning: The server has changed its public key. This means you are either under attack,\n&quot;</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="stringliteral">&quot;or the administrator has changed the key. The new public key fingerprint is:&quot;</span>),</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; keyname,</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; _(<span class="stringliteral">&quot;Do you trust the new public key?&quot;</span>));</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;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a>(gp, message);</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; g_free(message);</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; ssh_string_free_char(keyname);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; ssh_clean_pubkey_hash(&amp;pubkey);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">if</span> (ret != GTK_RESPONSE_YES) <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; ssh_session_update_known_hosts(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; ssh_write_knownhost(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 9, 0)</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">case</span> SSH_KNOWN_HOSTS_ERROR:</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">case</span> SSH_SERVER_ERROR:</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not check list of known SSH hosts. %s&quot;</span>));</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not check list of known SSH hosts&quot;</span>);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; }</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keyword">enum</span> { REMMINA_SSH_AUTH_PASSWORD, REMMINA_SSH_AUTH_PKPASSPHRASE, REMMINA_SSH_AUTH_KRBTOKEN, REMMINA_SSH_AUTH_KBDINTERACTIVE } remmina_ssh_auth_type;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">switch</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>) {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a7d995a7868d2d2f81e9dd2f898b206fe">SSH_AUTH_PASSWORD</a>:</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; keyname = _(<span class="stringliteral">&quot;SSH password&quot;</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_password&quot;</span> : <span class="stringliteral">&quot;password&quot;</span>;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_PASSWORD;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04aeba5f4ff7657d7b15519556793ee8930">SSH_AUTH_PUBLICKEY</a>:</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a39a8dcea793c406f0fe90f3175c4318e">SSH_AUTH_AGENT</a>:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a9f6024449a620d679eab2c09ea77877e">SSH_AUTH_AUTO_PUBLICKEY</a>:</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; keyname = _(<span class="stringliteral">&quot;Password for private SSH key&quot;</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_passphrase&quot;</span> : <span class="stringliteral">&quot;ssh_passphrase&quot;</span>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_PKPASSPHRASE;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04a6264a71469928ad51fa802f65f1a934a">SSH_AUTH_GSSAPI</a>:</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; keyname = _(<span class="stringliteral">&quot;SSH Kerberos/GSSAPI&quot;</span>);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; pwdfkey = ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_kerberos_token&quot;</span> : <span class="stringliteral">&quot;ssh_kerberos_token&quot;</span>;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_KRBTOKEN;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__file_8h.html#abc6126af1d45847bc59afa0aa3216b04ace3e7d92bcc601166da74981deacb0f8">SSH_AUTH_KBDINTERACTIVE</a>:</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; instruction = _(<span class="stringliteral">&quot;Enter TOTP/OTP/2FA code&quot;</span>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; remmina_ssh_auth_type = REMMINA_SSH_AUTH_KBDINTERACTIVE;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; }</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; disablepasswordstoring = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE);</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;</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; current_pwd = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, pwdfkey));</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="comment">/* Try existing password/passphrase first */</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; ret = <a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(ssh, current_pwd, gp, remminafile);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Returned %d at 1st attempt with the following message:&quot;</span>, ret);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="comment">/* It seems that functions like ssh_userauth_password() can only be called 3 times</span></div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"> * on a ssh connection. And the 3rd failed attempt will block the calling thread forever.</span></div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"> * So we retry only 2 extra time authentication. */</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordflow">for</span> (attempt = 0;</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; attempt &lt; 2 &amp;&amp; ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a>;</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; attempt++) {</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>)</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Retrying auth because %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_PKPASSPHRASE) {</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(gp,</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; (disablepasswordstoring ? 0 :</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>),</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">&quot;SSH tunnel credentials&quot;</span>) : _(<span class="stringliteral">&quot;SSH credentials&quot;</span>),</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; NULL,</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, pwdfkey),</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; NULL,</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; _(<span class="stringliteral">&quot;Password for private SSH key&quot;</span>));</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; save_password = <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(gp);</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, current_pwd);</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, NULL);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; }</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_PASSWORD) {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="comment">/* Ask for user credentials. Username cannot be changed here,</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment"> * because we already sent it when opening the connection */</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Showing panel for password\n&quot;</span>);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; current_user = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span> : <span class="stringliteral">&quot;username&quot;</span>));</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(gp,</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; (disablepasswordstoring ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>)</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; | <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; | (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a1f63bf86b8f6da71137cf0a28ebf024a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME_READONLY</a>),</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? _(<span class="stringliteral">&quot;SSH tunnel credentials&quot;</span>) : _(<span class="stringliteral">&quot;SSH credentials&quot;</span>),</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; current_user,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; current_pwd,</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; NULL,</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; NULL);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; save_password = <a class="code" href="remmina__protocol__widget_8c.html#a9ed3110b7b030bccd0ff9ed70e86da2d">remmina_protocol_widget_get_savepassword</a>(gp);</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keywordflow">if</span> (save_password)</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, current_pwd);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, pwdfkey, NULL);</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; !ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a6de32421fea0537fb29c03e0ae8b41d6">is_multiauth</a>) {</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; g_free(current_user);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; current_user = <a class="code" href="remmina__protocol__widget_8c.html#a96159bd8e9d70c74967e666e2f188df0">remmina_protocol_widget_get_username</a>(gp);</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <a class="code" href="remmina__file_8c.html#a85ca1ca2d0bf9ef29e490c6f4527a954">remmina_file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>, current_user);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> != NULL) {</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = NULL;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(current_user);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> != NULL) {</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(current_pwd);</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; g_free(current_user);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ad56c3878c4a651b51fdb3d0e8b9cebd7">REMMINA_SSH_AUTH_RECONNECT</a>;</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; g_free(current_user);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; g_free(current_user);</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (remmina_ssh_auth_type == REMMINA_SSH_AUTH_KBDINTERACTIVE) {</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Showing panel for keyboard interactive login\n&quot;</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; ret = <a class="code" href="remmina__protocol__widget_8c.html#aebc7c7d34c470081a52aa35d998ce868">remmina_protocol_widget_panel_auth</a>(</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; gp,</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; 0,</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; _(<span class="stringliteral">&quot;Keyboard interactive login, TOTP/OTP/2FA&quot;</span>),</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; NULL,</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; NULL,</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; NULL,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; instruction);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; current_pwd = <a class="code" href="remmina__protocol__widget_8c.html#a3fc52d61f77327534286f57e563e0923">remmina_protocol_widget_get_password</a>(gp);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;OTP code is: %s&quot;</span>, current_pwd);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(current_pwd);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1aa554c8cad3a99ccb8cf3a48ed9e219ea">REMMINA_SSH_AUTH_USERCANCEL</a>;</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; }</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; g_print(<span class="stringliteral">&quot;Unimplemented.&quot;</span>);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; g_free(current_pwd);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; }</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Retrying authentication&quot;</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; ret = <a class="code" href="remmina__ssh_8c.html#aad84c6609cb431d48121ae5e0902441b">remmina_ssh_auth</a>(ssh, current_pwd, gp, remminafile);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Authentication attempt n° %d returned %d with the following message:&quot;</span>, attempt + 2, ret);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; }</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; g_free(current_pwd); current_pwd = NULL;</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="comment">/* After attempting the max number of times, REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</span></div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> * becomes REMMINA_SSH_AUTH_FATAL_ERROR */</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">if</span> (ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a> || ret == <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a416a26d636d492c3530b6c5f0f04a623">REMMINA_SSH_AUTH_AGAIN</a>) {</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH Authentication failed&quot;</span>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; ret = <a class="code" href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a>;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</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; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;}</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="keywordtype">void</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;remmina_ssh_log_callback(ssh_session session, <span class="keywordtype">int</span> priority, <span class="keyword">const</span> <span class="keywordtype">char</span> *message, <span class="keywordtype">void</span> *userdata)</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;{</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; REMMINA_DEBUG(message);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;}</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;gboolean</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<a class="code" href="remmina__ssh_8h.html#a624b8ac30ddcd00ebda0b51d504f5a33">remmina_ssh_init_session</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</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"> 1657</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; gint verbosity;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; gint rc;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; gchar *parsed_config;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; socket_t sshsock;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; gint optval;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a> = g_new0(<span class="keyword">struct</span> ssh_callbacks_struct, 1);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="comment">/* Init &amp; startup the SSH session */</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server=%s port=%d is_tunnel=%s tunnel_entrance_host=%s tunnel_entrance_port=%d&quot;</span>,</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>,</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>,</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> ? <span class="stringliteral">&quot;Yes&quot;</span> : <span class="stringliteral">&quot;No&quot;</span>,</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = ssh_new();</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="comment">/* Tunnel sanity checks */</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> != NULL) {</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">&quot;Internal error in %s: is_tunnel and tunnel_entrance != NULL&quot;</span>, __func__);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; REMMINA_DEBUG(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> FALSE;</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; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> &amp;&amp; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> == NULL) {</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = g_strdup_printf(<span class="stringliteral">&quot;Internal error in %s: is_tunnel == false and tunnel_entrance == NULL&quot;</span>, __func__);</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; REMMINA_DEBUG(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; }</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="comment">/* Set connection host/port */</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>) {</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PORT, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to %s and SSH_OPTIONS_PORT to %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> &amp;&amp; *ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> != 0) {</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_IDENTITY, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_IDENTITY is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_IDENTITY is not set, by default the files “identity”, “id_dsa” and “id_rsa” are used.&quot;</span>);</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;<span class="preprocessor">#ifdef SNAP_BUILD</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_SSH_DIR, g_strdup_printf(<span class="stringliteral">&quot;%s/.ssh&quot;</span>, g_getenv(<span class="stringliteral">&quot;SNAP_USER_COMMON&quot;</span>)));</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; ssh_callbacks_init(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__log_8c.html#a96f5bb72acbdcbf8793b4a5f4a6132b5">remmina_log_running</a>()) {</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; verbosity = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#aac4f34f297a653052752b571777bc001">ssh_loglevel</a>;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_LOG_VERBOSITY, &amp;verbosity);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>-&gt;log_function = remmina_ssh_log_callback;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="comment">/* Reset libssh legacy userdata. This is a workaround for a libssh bug */</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; ssh_set_log_userdata(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>-&gt;userdata = ssh;</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; ssh_set_callbacks(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="comment">/* As the latest parse the ~/.ssh/config file */</span></div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>) == 0) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOST temporary set to the destination host as ssh-&gt;tunnel_entrance_host is 127.0.0.1,&quot;</span>);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; }</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</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#a1d7deb091e0d51a8d7885ad9e22dc9a7">ssh_parseconfig</a>) {</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">if</span> (ssh_options_parse_config(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL) == 0)</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh_config have been correctly parsed&quot;</span>);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cannot parse ssh_config: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; }</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>) == 0) {</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Setting SSH_OPTIONS_HOST to ssh-&gt;tunnel_entrance_host is 127.0.0.1,&quot;</span>);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOST, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; <span class="keywordflow">if</span> (!ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> || *ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> == 0) {</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, &amp;parsed_config);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>)</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_USER returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; }</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_USER, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_USER is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="comment">/* SSH_OPTIONS_PROXYCOMMAND */</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, &amp;parsed_config);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_PROXYCOMMAND returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; }</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_PROXYCOMMAND, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_PROXYCOMMAND is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_PROXYCOMMAND does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="comment">/* SSH_OPTIONS_HOSTKEYS */</span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, &amp;parsed_config);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_HOSTKEYS returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; }</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_HOSTKEYS, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOSTKEYS is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_HOSTKEYS does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="comment">/* SSH_OPTIONS_KEY_EXCHANGE */</span></div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, &amp;parsed_config);</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_KEY_EXCHANGE returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; }</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_KEY_EXCHANGE, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_KEY_EXCHANGE is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_KEY_EXCHANGE does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="comment">/* SSH_OPTIONS_CIPHERS_C_S */</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, &amp;parsed_config);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_CIPHERS_C_S returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; }</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_CIPHERS_C_S, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_CIPHERS_C_S has been set to %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_CIPHERS_C_S does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="comment">/* SSH_OPTIONS_STRICTHOSTKEYCHECK */</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &amp;parsed_config);</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = atoi(parsed_config);</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_STRICTHOSTKEYCHECK returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_STRICTHOSTKEYCHECK, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_STRICTHOSTKEYCHECK is now %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_STRICTHOSTKEYCHECK does not have a valid value. %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <span class="comment">/* SSH_OPTIONS_COMPRESSION */</span></div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; rc = ssh_options_get(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, &amp;parsed_config);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="keywordflow">if</span> (rc == SSH_OK) {</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = g_strdup(parsed_config);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; ssh_string_free_char(parsed_config);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Parsing ssh_config for SSH_OPTIONS_COMPRESSION returned an error: %s&quot;</span>, ssh_get_error(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>));</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; }</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; rc = ssh_options_set(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, SSH_OPTIONS_COMPRESSION, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">if</span> (rc == 0)</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_COMPRESSION is now %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH_OPTIONS_COMPRESSION does not have a valid value. %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">if</span> (ssh_connect(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>)) {</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(ssh, _(<span class="stringliteral">&quot;Could not start SSH session. %s&quot;</span>));</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; }</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;<span class="preprocessor">#ifdef HAVE_NETINET_TCP_H</span></div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="comment">/* Set keepalive on SSH socket, so we can keep firewalls awaken and detect</span></div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;<span class="comment"> * when we loss the tunnel */</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; sshsock = ssh_get_fd(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">if</span> (sshsock &gt;= 0) {</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; optval = 1;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, SOL_SOCKET, SO_KEEPALIVE, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP KeepAlive not set&quot;</span>);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP KeepAlive enabled&quot;</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160;</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPIDLE</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a2bf96a40b9f63300d02e158b26546203">ssh_tcp_keepidle</a>;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPIDLE, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPIDLE not set&quot;</span>);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPIDLE set to %i&quot;</span>, optval);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPCNT</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a082f698b8aa7cec3c1cb0fd987d4358f">ssh_tcp_keepcnt</a>;</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPCNT, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPCNT not set&quot;</span>);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPCNT set to %i&quot;</span>, optval);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;<span class="preprocessor">#ifdef TCP_KEEPINTVL</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#a793ae9c3e2f88eed85551c85d6832ebd">ssh_tcp_keepintvl</a>;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_KEEPINTVL, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPINTVL not set&quot;</span>);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_KEEPINTVL set to %i&quot;</span>, optval);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;<span class="preprocessor">#ifdef TCP_USER_TIMEOUT</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; optval = <a class="code" href="rcw_8c.html#a29701ae152ba15f6d8921f395174d2df">remmina_pref</a>.<a class="code" href="struct___remmina_pref.html#ad92d70d47d7ad80298efe591955fa8b8">ssh_tcp_usrtimeout</a>;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; <span class="keywordflow">if</span> (setsockopt(sshsock, IPPROTO_TCP, TCP_USER_TIMEOUT, &amp;optval, <span class="keyword">sizeof</span>(optval)) &lt; 0)</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_USER_TIMEOUT not set&quot;</span>);</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;TCP_USER_TIMEOUT set to %i&quot;</span>, optval);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; }</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <span class="comment">/* Try the &quot;none&quot; authentication */</span></div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="keywordflow">if</span> (ssh_userauth_none(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>, NULL) == SSH_AUTH_SUCCESS)</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = TRUE;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;}</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160;gboolean</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;<a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile, gboolean is_tunnel)</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160;{</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; <span class="keyword">const</span> gchar *username;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keyword">const</span> gchar *privatekey;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; <span class="keyword">const</span> gchar *server;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; gchar *s;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a> = NULL;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = NULL;</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = NULL;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = is_tunnel;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; pthread_mutex_init(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>, NULL);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = NULL;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = 0;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; username = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_username&quot;</span> : <span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; privatekey = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_privatekey&quot;</span> : <span class="stringliteral">&quot;ssh_privatekey&quot;</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_certfile&quot;</span> : <span class="stringliteral">&quot;ssh_certfile&quot;</span>));</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="comment">/* The ssh-&gt;server and ssh-&gt;port values */</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <span class="keywordflow">if</span> (is_tunnel) {</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We are initializing an SSH tunnel session&quot;</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; 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="l01919"></a><span class="lineno"> 1919</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0) {</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// ssh_tunnel_server empty or invalid, we are opening a tunnel, it means that &quot;Same server at port 22&quot; has been selected</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</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="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; server = <span class="stringliteral">&quot;localhost&quot;</span>;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = 22;</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server:port = %s, server = %s, port = %d&quot;</span>, server, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;We are initializing an SSH session&quot;</span>);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</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="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="keywordflow">if</span> (server == NULL || server[0] == 0)</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; server = <span class="stringliteral">&quot;localhost&quot;</span>;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 22, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;server:port = %s, server = %s, port = %d&quot;</span>, server, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; }</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160;</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <span class="comment">// ???</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Calling remmina_public_get_server_port&quot;</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <a class="code" href="remmina__public_8c.html#adc8b77823386e00e610527d6b0b61149">remmina_public_get_server_port</a>(server, 0, &amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, NULL);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; }</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Initialized SSH struct from file with ssh-&gt;server = %s and SSH-&gt;port = %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(username ? username : NULL);</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_auth&quot;</span> : <span class="stringliteral">&quot;ssh_auth&quot;</span>, 0);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;ssh_charset&quot;</span>));</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_kex_algorithms&quot;</span> : <span class="stringliteral">&quot;ssh_kex_algorithms&quot;</span>));</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_ciphers&quot;</span> : <span class="stringliteral">&quot;ssh_ciphers&quot;</span>));</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_hostkeytypes&quot;</span> : <span class="stringliteral">&quot;ssh_hostkeytypes&quot;</span>));</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_proxycommand&quot;</span> : <span class="stringliteral">&quot;ssh_proxycommand&quot;</span>));</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_stricthostkeycheck&quot;</span> : <span class="stringliteral">&quot;ssh_stricthostkeycheck&quot;</span>, 0);</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; gint c = <a class="code" href="remmina__file_8c.html#a4884356c195dcfb4ceacf641a1e74e66">remmina_file_get_int</a>(remminafile, is_tunnel ? <span class="stringliteral">&quot;ssh_tunnel_compression&quot;</span> : <span class="stringliteral">&quot;ssh_compression&quot;</span>, 0);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = (c == 1) ? <span class="stringliteral">&quot;yes&quot;</span> : <span class="stringliteral">&quot;no&quot;</span>;</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;user: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;password: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;auth: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;charset: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;kex_algorithms: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;ciphers: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;hostkeytypes: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;proxycommand: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;stricthostkeycheck: %d&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>);</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;compression: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>);</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="comment">/* Public/Private keys */</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; s = (privatekey ? g_strdup(privatekey) : <a class="code" href="remmina__ssh_8c.html#ab6d8bdad543b3caead2b2b0339484798">remmina_ssh_find_identity</a>());</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">if</span> (s) {</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = <a class="code" href="remmina__ssh_8c.html#a72a58e416c4eeb9d17eaf76360ebee42">remmina_ssh_identity_path</a>(s);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;ssh-&gt;privkeyfile: %s&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; g_free(s);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = NULL;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; }</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160;}</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;remmina_ssh_init_from_ssh(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> <a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh_src)</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;{</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac148c436afa70f426d665b4ddd2d8f4d">authenticated</a> = FALSE;</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a> = NULL;</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; pthread_mutex_init(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>, NULL);</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ace4bb7170f349bd7f127f72c9c7b6ac6">is_tunnel</a>;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa064626a7fd528e7d8c1fc34d1bd8dfc">port</a>;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> ? ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a> : NULL);</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#abf5a73c3444790177635a6eab6417d03">auth</a>;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa34e103281dafaa073d2a676b3368529">passphrase</a>);</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ac03e015f09baa46d4a9a118c606736af">proxycommand</a>);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a345d41b54490dd39e35280122d22feed">kex_algorithms</a>);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b3e071eb2c6011efdcea3f65f8e7fa0">ciphers</a>);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a69e209a1ee77d6dfe5d87961e2a50a6a">hostkeytypes</a>);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a62e6a209747daa65061273243e830ae9">stricthostkeycheck</a>;</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#ab017331f59fceff63bb33ff00d088870">compression</a>;</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a> = g_strdup(ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#aebc7525b6f72d22c1ce4df93c1576602">tunnel_entrance_host</a>);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a> = ssh_src-&gt;<a class="code" href="struct___remmina_s_s_h.html#a76ed92539dfe749a24a3a3b99f3a644f">tunnel_entrance_port</a>;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;}</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;gchar *</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<a class="code" href="remmina__ssh_8h.html#a09bd4aee40b6e8d6ba8ffaa84dc95330">remmina_ssh_convert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from)</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;{</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; gchar *to = NULL;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> &amp;&amp; from)</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; to = g_convert(from, -1, <span class="stringliteral">&quot;UTF-8&quot;</span>, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, NULL, NULL, NULL);</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160;}</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;gchar *</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<a class="code" href="remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea">remmina_ssh_unconvert</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh, <span class="keyword">const</span> gchar *from)</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;{</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; gchar *to = NULL;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a> &amp;&amp; from)</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; to = g_convert(from, -1, ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>, <span class="stringliteral">&quot;UTF-8&quot;</span>, NULL, NULL, NULL);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="keywordflow">if</span> (!to) to = g_strdup(from);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">return</span> to;</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;}</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;<a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160;{</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordflow">if</span> (ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>) {</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Disconnecting SSH session&quot;</span>);</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; ssh_disconnect(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; ssh_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a> = NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#aa8e75d0a635b3390100218bee6b49378">callback</a>);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#ae396f0b535e2e92d640a0eb971aa082b">server</a>);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3a8dc7679e22208bbdf076c520f25bbb">user</a>);</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#adedb385c39effff9c9dd5767250f8c89">password</a>);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#af9f34b088c5af320708cf02dfc45d59e">privkeyfile</a>);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a37cb349f88211ed4a65a3486f8523eaa">certfile</a>);</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a0b35a5a573abb5e8b8a27a91434a00a5">charset</a>);</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; g_free(ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a3aaebd7f03b7d8601818fabc46b787ed">error</a>);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; pthread_mutex_destroy(&amp;ssh-&gt;<a class="code" href="struct___remmina_s_s_h.html#a547feb6e46dfb8e37a4eb338c17d7b52">ssh_mutex</a>);</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; g_free(ssh);</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;}</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160;</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;<span class="comment">* SSH Tunnel *</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160;<span class="keyword">struct </span>_RemminaSSHTunnelBuffer {</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; gchar * data;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; gchar * ptr;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; ssize_t len;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;};</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="keyword">static</span> <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;remmina_ssh_tunnel_buffer_new(ssize_t len)</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;{</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *buffer;</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; buffer = g_new(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a>, 1);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; buffer-&gt;data = (gchar *)g_malloc(len);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; buffer-&gt;ptr = buffer-&gt;data;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; buffer-&gt;len = len;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;}</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;remmina_ssh_tunnel_buffer_free(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *buffer)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;{</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="keywordflow">if</span> (buffer) {</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; g_free(buffer-&gt;data);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; g_free(buffer);</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; }</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;}</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;<a class="code" href="remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d">remmina_ssh_tunnel_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;{</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; tunnel = g_new(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a>, 1);</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(tunnel), remminafile, TRUE);</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = -1;</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = NULL;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = NULL;</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = NULL;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> = 0;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = 0;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a> = NULL;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = 0;</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = NULL;</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a> = 0;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = NULL;</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = 0;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a> = NULL;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> = NULL;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a> = NULL;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a> = NULL;</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a> = NULL;</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">return</span> tunnel;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160;}</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;remmina_ssh_tunnel_close_all_channels(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;{</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160;</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>; i++) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i]);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]);</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; ssh_channel_close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; ssh_channel_send_eof(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; ssh_channel_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i]);</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; }</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>);</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = NULL;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>);</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = NULL;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>);</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = NULL;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> = 0;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = 0;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;}</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;remmina_ssh_tunnel_remove_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint n)</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;{</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; ssh_channel_close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; ssh_channel_send_eof(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; ssh_channel_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n]);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n]);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n]);</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>--;</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>] = NULL;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[n] = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>];</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;}</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;<span class="comment">/* Register the new channel/socket pair */</span></div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;remmina_ssh_tunnel_add_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, ssh_channel <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>, gint sock)</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160;{</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; gint flags;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; gint i;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; i = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>++;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> &gt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a>) {</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <span class="comment">/* Allocate an extra NULL pointer in channels for ssh_select */</span></div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a> = (ssh_channel *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>,</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> + 1));</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a> = (gint *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>,</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <span class="keyword">sizeof</span>(gint) * tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a> = (<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> **)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>,</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; <span class="keyword">sizeof</span>(<a class="code" href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a> *) * tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6a184c6ca8fa267012d86986dac396c6">max_channels</a> = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a> = (ssh_channel *)g_realloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>,</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="keyword">sizeof</span>(ssh_channel) * (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> + 1));</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; }</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i] = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i + 1] = NULL;</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] = sock;</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = NULL;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160; flags = fcntl(sock, F_GETFL, 0);</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; fcntl(sock, F_SETFL, flags | O_NONBLOCK);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;}</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;remmina_ssh_tunnel_accept_local_connection(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean blocking)</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;{</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; gint sock, sock_flags;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; sock_flags = fcntl(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, F_GETFL, 0);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; <span class="keywordflow">if</span> (blocking)</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; sock_flags &amp;= ~O_NONBLOCK;</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; sock_flags |= O_NONBLOCK;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; fcntl(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, F_SETFL, sock_flags);</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; <span class="comment">/* Accept a local connection */</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; sock = accept(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>, NULL, NULL);</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; <span class="keywordflow">if</span> (blocking) {</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; g_free(REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(<span class="stringliteral">&quot;Local socket not accepted&quot;</span>);</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; }</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; }</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; <span class="keywordflow">return</span> sock;</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;}</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;<span class="keyword">static</span> ssh_channel</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;remmina_ssh_tunnel_create_forward_channel(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160;{</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; channel = ssh_channel_new(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad9887ee0673a2b0b03b091746ae02d23">ssh</a>.<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not create channel. %s&quot;</span>));</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160; }</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="comment">/* Request the SSH server to connect to the destination */</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;SSH tunnel destination is %s&quot;</span>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>);</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <span class="keywordflow">if</span> (ssh_channel_open_forward(channel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, <span class="stringliteral">&quot;127.0.0.1&quot;</span>, 0) != SSH_OK) {</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not connect to SSH tunnel. %s&quot;</span>));</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; }</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;}</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;remmina_ssh_tunnel_main_thread_proc(gpointer data)</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;{</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; gchar *ptr;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; ssize_t len = 0, lenw = 0;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; fd_set <span class="keyword">set</span>;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; <span class="keyword">struct </span>timeval timeout;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; g_autoptr(GDateTime) t1 = NULL;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; g_autoptr(GDateTime) t2 = NULL;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; GTimeSpan diff; <span class="comment">// microseconds</span></div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; gboolean first = TRUE;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; gboolean disconnected;</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; gint sock;</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; gint maxfd;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; gint i;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; gint ret;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; t1 = t2 = g_date_time_new_now_local();</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160;</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; <span class="keywordflow">switch</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a>) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>:</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; sock = remmina_ssh_tunnel_accept_local_connection(tunnel, TRUE);</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; <span class="keywordflow">if</span> (tunnel)</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160; }</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; close(sock);</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; }</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>:</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160; <span class="comment">/* Detect the next available port starting from 6010 on the server */</span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; <span class="keywordflow">for</span> (i = 10; i &lt;= MAX_X_DISPLAY_NUMBER; i++) {</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)-&gt;session, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = i;</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; }</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)-&gt;session, (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> ? <span class="stringliteral">&quot;localhost&quot;</span> : NULL), 6000 + i, NULL)) {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> = i;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; }</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> &lt; 1) {</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160;</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &amp;&amp;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; !(*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>)) {</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; <span class="keywordflow">case</span> <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>:</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keywordflow">if</span> (ssh_channel_listen_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, NULL)) {</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; <span class="keywordflow">if</span> (ssh_forward_listen(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>, NULL)) {</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not request port forwarding. %s&quot;</span>));</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; }</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a> &amp;&amp;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; !(*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a8066492c4a0181f1b39b2fb2098fb56d">init_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>)) {</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; }</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; }</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a> = 10240;</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a> = g_malloc(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>);</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; <span class="comment">/* Start the tunnel data transmission */</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) {</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a> ||</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="keywordflow">if</span> (first) {</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; first = FALSE;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)-&gt;session, 15000, &amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;The server did not respond.&quot;</span>));</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; }</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa904bb1d9f643f6fde2b0eea4a8b1660">connect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; <span class="comment">/* For reverse tunnel, we only need one connection. */</span></div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; ssh_channel_cancel_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; ssh_forward_cancel(REMMINA_SSH(tunnel)-&gt;session, NULL, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; }</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> != <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; <span class="comment">/* Poll once per some period of time if no incoming connections.</span></div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;<span class="comment"> * Don’t try to poll continuously as it will significantly slow down the loop */</span></div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; t1 = g_date_time_new_now_local();</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; diff = g_date_time_difference(t1, t2) * 10000000</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; + g_date_time_difference(t1, t2) / 100000;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <span class="keywordflow">if</span> (diff &gt; 1) {</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Polling tunnel channels&quot;</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; channel = ssh_channel_accept_forward(REMMINA_SSH(tunnel)-&gt;session, 0, &amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a>);</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="keywordflow">if</span> (channel == NULL)</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; t2 = t1;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; }</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; g_date_time_unref(t1);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; g_date_time_unref(t2);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <span class="keywordflow">if</span> (channel) {</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>) {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; sin.sin_family = AF_INET;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; sin.sin_port = htons(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; <span class="keywordflow">if</span> (connect(sock, (<span class="keyword">struct</span> sockaddr *)&amp;sin, <span class="keyword">sizeof</span>(sin)) &lt; 0) {</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel),</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; _(<span class="stringliteral">&quot;Cannot connect to local port %i.&quot;</span>), tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a>);</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; close(sock);</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; sock = -1;</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; }</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; sock = <a class="code" href="remmina__public_8c.html#a52656bbe00a83068f36337f449bdc767">remmina_public_open_xdisplay</a>(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; <span class="keywordflow">if</span> (sock &gt;= 0)</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; <span class="comment">/* Failed to create unix socket. Will this happen? */</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; }</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; channel = NULL;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; }</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a> &lt;= 0)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; <span class="comment">/* No more connections. We should quit */</span></div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; timeout.tv_sec = 0;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; timeout.tv_usec = 200000;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160;</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; FD_ZERO(&amp;<span class="keyword">set</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; maxfd = 0;</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#abb17dc2972e189660c20eff7ec0fe513">num_channels</a>; i++) {</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i] &gt; maxfd)</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; maxfd = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i];</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; FD_SET(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &amp;<span class="keyword">set</span>);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; ret = ssh_select(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>, maxfd + 1, &amp;<span class="keyword">set</span>, &amp;timeout);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; <span class="keywordflow">if</span> (ret == SSH_EINTR) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">if</span> (ret == -1) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160;</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; i = 0;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> &amp;&amp; i &lt; tunnel-&gt;num_channels) {</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; disconnected = FALSE;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; <span class="keywordflow">if</span> (FD_ISSET(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], &amp;<span class="keyword">set</span>)) {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; <span class="keywordflow">while</span> (!disconnected &amp;&amp;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; (len = read(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb">buffer_len</a>)) &gt; 0) {</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; <span class="keywordflow">for</span> (ptr = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>, lenw = 0; len &gt; 0; len -= lenw, ptr += lenw) {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; lenw = ssh_channel_write(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], (<span class="keywordtype">char</span> *)ptr, len);</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <span class="keywordflow">if</span> (lenw &lt;= 0) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not write to SSH channel. %s&quot;</span>));</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; }</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; <span class="keywordflow">if</span> (len == 0) {</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not read from tunnel listening socket. %s&quot;</span>));</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; }</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; }</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;tunnel disconnected because %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; i++;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; }</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160;</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; i = 0;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <span class="keywordflow">while</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> &amp;&amp; i &lt; tunnel-&gt;num_channels) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; disconnected = FALSE;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keywordflow">if</span> (!tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; len = ssh_channel_poll(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], 0);</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; <span class="keywordflow">if</span> (len == SSH_ERROR || len == SSH_EOF) {</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not poll SSH channel. %s&quot;</span>));</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = remmina_ssh_tunnel_buffer_new(len);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; len = ssh_channel_read_nonblocking(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ab11c1bcc8549ce8b154f65f9009c65d4">channels</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;data, len, 0);</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keywordflow">if</span> (len &lt;= 0) {</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not read SSH channel in a non-blocking way. %s&quot;</span>));</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len = len;</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; }</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; }</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <span class="keywordflow">if</span> (!disconnected &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]) {</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keywordflow">for</span> (lenw = 0; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len &gt; 0;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len -= lenw, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;ptr += lenw) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; lenw = write(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa9ab1684349da8bfd6b84cc135c053b3">sockets</a>[i], tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;ptr, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len);</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; <span class="keywordflow">if</span> (lenw == -1 &amp;&amp; errno == EAGAIN &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>)</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="comment">/* Sometimes we cannot write to a socket (always EAGAIN), probably because it’s internal</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="comment"> * buffer is full. We need read the pending bytes from the socket first. so here we simply</span></div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160;<span class="comment"> * break, leave the buffer there, and continue with other data */</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; <span class="keywordflow">if</span> (lenw &lt;= 0) {</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not send data to tunnel listening socket. %s&quot;</span>));</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; disconnected = TRUE;</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; }</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]-&gt;len &lt;= 0) {</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; remmina_ssh_tunnel_buffer_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i]);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a27cb79f54113bb4aa46ea163717087b1">socketbuffers</a>[i] = NULL;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; }</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; }</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Connection to SSH tunnel dropped. %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; remmina_ssh_tunnel_remove_channel(tunnel, i);</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; }</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; i++;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; sock = remmina_ssh_tunnel_accept_local_connection(tunnel, FALSE);</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; <span class="keywordflow">if</span> (sock &gt; 0) {</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; channel = remmina_ssh_tunnel_create_forward_channel(tunnel);</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; <span class="keywordflow">if</span> (!channel) {</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Could not open new SSH connection. %s&quot;</span>, REMMINA_SSH(tunnel)-&gt;error);</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; close(sock);</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <span class="comment">/* Leave thread loop */</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; remmina_ssh_tunnel_add_channel(tunnel, channel, sock);</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; }</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <span class="comment">/* Notify tunnel owner of disconnection */</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a19fed9a85494d40d3f2ae2ae1d1bc18c">disconnect_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6f2cd8a2535e180e7bd428e84030ffb6">callback_data</a>);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160;</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160;}</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160;</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160;<span class="keyword">static</span> gboolean remmina_ssh_notify_tunnel_main_thread_end(gpointer data)</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;{</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160;</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; <span class="comment">/* Ask tunnel owner to destroy tunnel object */</span></div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; (*tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a1e1f1bfaec497b1365ea70ebe795d778">destroy_func</a>)(tunnel, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a33ae9b7cd8cb3dcd85223017dfd13795">destroy_func_callback_data</a>);</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;}</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160;remmina_ssh_tunnel_main_thread(gpointer data)</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;{</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel = (<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *)data;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordflow">while</span> (TRUE) {</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; remmina_ssh_tunnel_main_thread_proc(data);</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &lt; 0 || tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0 || !tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; }</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; <span class="comment">/* Do after tunnel thread cleanup */</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; IDLE_ADD((GSourceFunc)remmina_ssh_notify_tunnel_main_thread_end, (gpointer)tunnel);</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160;}</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae9f52b1a3a545acae8c93007e20ec909">remmina_ssh_tunnel_cancel_accept</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160;{</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &gt;= 0) {</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; }</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;}</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160;</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;gboolean</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;<a class="code" href="remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53">remmina_ssh_tunnel_open</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, <span class="keyword">const</span> gchar *host, gint port, gint local_port)</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;{</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; gint sock;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; gint sockopt = 1;</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; <span class="keyword">struct </span>sockaddr_in sin;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14">REMMINA_SSH_TUNNEL_OPEN</a>;</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a> = g_strdup(host);</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = port;</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> == 0) {</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Assign a destination port.&quot;</span>));</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; }</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; <span class="comment">/* Create the server socket that listens on the local port */</span></div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; sock = socket(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; <span class="keywordflow">if</span> (sock &lt; 0) {</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not create socket.&quot;</span>));</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; }</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &amp;sockopt, <span class="keyword">sizeof</span>(sockopt));</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160;</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; sin.sin_family = AF_INET;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; sin.sin_port = htons(local_port);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; sin.sin_addr.s_addr = inet_addr(<span class="stringliteral">&quot;127.0.0.1&quot;</span>);</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; <span class="keywordflow">if</span> (bind(sock, (<span class="keyword">struct</span> sockaddr *)&amp;sin, <span class="keyword">sizeof</span>(sin))) {</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not bind server socket to local port.&quot;</span>));</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; close(sock);</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; }</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="keywordflow">if</span> (listen(sock, 1)) {</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; REMMINA_SSH(tunnel)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not listen to local port.&quot;</span>));</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; close(sock);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; }</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160;</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = sock;</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; }</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160;}</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160;</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160;gboolean</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160;<a class="code" href="remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4">remmina_ssh_tunnel_xport</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gboolean bindlocalhost)</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;{</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a>;</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a6fa916d3736cb8e2a0e6541f608c209b">bindlocalhost</a> = bindlocalhost;</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160;</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160;}</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;gboolean</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2">remmina_ssh_tunnel_reverse</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel, gint port, gint local_port)</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;{</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> = <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459">REMMINA_SSH_TUNNEL_REVERSE</a>;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ad883561d61ee8d32d2201e642b0ab9cc">port</a> = port;</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ae41b6af92643cfbcd3e13275f4281260">localport</a> = local_port;</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = TRUE;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>, NULL, remmina_ssh_tunnel_main_thread, tunnel)) {</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; <span class="comment">// TRANSLATORS: Do not translate pthread</span></div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <a class="code" href="remmina__ssh_8c.html#a1f3297263703b4259c1c9607d710995d">remmina_ssh_set_application_error</a>(REMMINA_SSH(tunnel), _(<span class="stringliteral">&quot;Could not start pthread.&quot;</span>));</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; }</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;}</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160;</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;gboolean</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160;<a class="code" href="remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38">remmina_ssh_tunnel_terminated</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160;{</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; <span class="keywordflow">return</span> tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> == 0;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160;}</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160;<a class="code" href="remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06">remmina_ssh_tunnel_free</a>(<a class="code" href="struct___remmina_s_s_h_tunnel.html">RemminaSSHTunnel</a> *tunnel)</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;{</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; pthread_t <a class="code" href="structitem.html#a1bfbfa35087440a4b217fd9fa4466bdb">thread</a>;</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160;</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;tunnel-&gt;thread = %lX\n&quot;</span>, tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>);</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; thread = tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a>;</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="keywordflow">if</span> (thread != 0) {</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a956cb7289e147875ae5f745b33514ebd">running</a> = FALSE;</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; pthread_cancel(thread);</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; pthread_join(thread, NULL);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#aa496acab4967f380e3520aeb9dae2bbd">thread</a> = 0;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; }</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#ac86d0d359e5d97d8d60fac69c9af69df">tunnel_type</a> == <a class="code" href="remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326">REMMINA_SSH_TUNNEL_XPORT</a> &amp;&amp; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a> &gt; 0) {</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160;<span class="preprocessor">#if LIBSSH_VERSION_INT &gt;= SSH_VERSION_INT(0, 7, 0)</span></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; ssh_channel_cancel_forward(REMMINA_SSH(tunnel)-&gt;session, NULL, 6000 + tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>);</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; ssh_forward_cancel(REMMINA_SSH(tunnel)-&gt;session, NULL, 6000 + tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#af670e0b0960c3e71e9f0b8b797ef9c28">remotedisplay</a>);</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; }</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; <span class="keywordflow">if</span> (tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> &gt;= 0) {</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; close(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a>);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69">server_sock</a> = -1;</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; }</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; remmina_ssh_tunnel_close_all_channels(tunnel);</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">buffer</a>);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">channels_out</a>);</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a4d61f0c0926686f8451dcf49d2d857da">dest</a>);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; g_free(tunnel-&gt;<a class="code" href="struct___remmina_s_s_h_tunnel.html#a071153b511500c3faa6804ebd76aeba1">localdisplay</a>);</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>((<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *)tunnel);</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;}</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160;<span class="comment">* SSH SFTP *</span></div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;<a class="code" href="remmina__ssh_8h.html#a3d7138d9cbbe44aea15440436ce85d6e">remmina_sftp_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160;{</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; <a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp;</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; sftp = g_new(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a>, 1);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(sftp), remminafile, FALSE);</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;}</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160;</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160;<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1500d65d1f0751812f237c1cb4d15188">remmina_sftp_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160;{</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160; <a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp;</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160;</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; sftp = g_new(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a>, 1);</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; remmina_ssh_init_from_ssh(REMMINA_SSH(sftp), ssh);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160;</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; <span class="keywordflow">return</span> sftp;</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;}</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160;</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;gboolean</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1e09b32044c240a7dce0ad8afcbf0ff2">remmina_sftp_open</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp)</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;{</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = sftp_new(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#a7dab48a7603f1dd6671a8dd1efe1958e">ssh</a>.<a class="code" href="struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3">session</a>);</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="keywordflow">if</span> (!sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>) {</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">&quot;Could not create SFTP session. %s&quot;</span>));</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; }</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; <span class="keywordflow">if</span> (sftp_init(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>)) {</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(sftp), _(<span class="stringliteral">&quot;Could not start SFTP session. %s&quot;</span>));</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; }</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160;}</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160;<a class="code" href="remmina__ssh_8h.html#aaaf171c31b73f06f1026239253d9f6b9">remmina_sftp_free</a>(<a class="code" href="struct___remmina_s_f_t_p.html">RemminaSFTP</a> *sftp)</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;{</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; <span class="keywordflow">if</span> (sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>) {</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; sftp_free(sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a>);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; sftp-&gt;<a class="code" href="struct___remmina_s_f_t_p.html#adef92bcfa7b9a86debf0531d0239a5df">sftp_sess</a> = NULL;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; }</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(REMMINA_SSH(sftp));</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;}</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160;<span class="comment">/*-----------------------------------------------------------------------------*</span></div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;<span class="comment">* SSH Shell *</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160;<span class="comment">*-----------------------------------------------------------------------------*/</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160;<a class="code" href="remmina__ssh_8h.html#a30412e0b4302f5ae0b9be2749390a48d">remmina_ssh_shell_new_from_file</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile)</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;{</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell;</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; shell = g_new0(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a>, 1);</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <a class="code" href="remmina__ssh_8h.html#a6815a78f65795cbc6795ca1c59e73102">remmina_ssh_init_from_file</a>(REMMINA_SSH(shell), remminafile, FALSE);</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = -1;</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = -1;</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;exec&quot;</span>));</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> = g_strdup(<a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;run_line&quot;</span>));</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;}</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160;<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;<a class="code" href="remmina__ssh_8h.html#ae0792ddb4adcaafefc1a4604cefdd8f4">remmina_ssh_shell_new_from_ssh</a>(<a class="code" href="struct___remmina_s_s_h.html">RemminaSSH</a> *ssh)</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160;{</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell;</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; shell = g_new0(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a>, 1);</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; remmina_ssh_init_from_ssh(REMMINA_SSH(shell), ssh);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160;</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = -1;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = -1;</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; <span class="keywordflow">return</span> shell;</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;}</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160;</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;remmina_ssh_call_exit_callback_on_main_thread(gpointer data)</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160;{</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160;</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)data;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>)</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>);</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; <span class="keywordflow">if</span> (shell) {</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(shell);</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; shell = NULL;</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; }</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;}</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;<span class="keyword">static</span> gpointer</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;remmina_ssh_shell_thread(gpointer data)</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;{</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160; <a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell = (<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *)data;</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *)shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a>;</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160; remminafile = <a class="code" href="remmina__protocol__widget_8c.html#a2506e80d482c34532d0e534856452069">remmina_protocol_widget_get_file</a>(gp);</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; ssh_channel channel = NULL;</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; gint ret;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160; gchar *filename;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <span class="keyword">const</span> gchar *dir;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; <span class="keyword">const</span> gchar *sshlogname;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; FILE *fp = NULL;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160; <span class="comment">//gint screen;</span></div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160; <span class="keywordflow">if</span> ((channel = ssh_channel_new(REMMINA_SSH(shell)-&gt;session)) == NULL ||</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; ssh_channel_open_session(channel)) {</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">&quot;Could not open channel. %s&quot;</span>));</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="keywordflow">if</span> (channel) ssh_channel_free(channel);</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; }</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; ssh_channel_request_pty(channel);</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; <span class="comment">// SSH Callbacks</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="keyword">struct </span>ssh_callbacks_struct cb =</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; .channel_open_request_x11_function = <a class="code" href="remmina__ssh_8c.html#ab8f07d5ab2ee8aa8423a11808b6cb100">remmina_ssh_x11_open_request_cb</a>,</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; .userdata = shell,</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; };</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</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_forward_x11&quot;</span>, FALSE)) {</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; ssh_callbacks_init(&amp;cb);</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; ssh_set_callbacks(REMMINA_SSH(shell)-&gt;session, &amp;cb);</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display = getenv(<span class="stringliteral">&quot;DISPLAY&quot;</span>);</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; <span class="keywordtype">char</span> *proto = NULL, *cookie = NULL;</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b">remmina_ssh_x11_get_proto</a>(display, &amp;proto, &amp;cookie) != 0) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Using fake authentication data for X11 forwarding&quot;</span>);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; proto = NULL;</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; cookie = NULL;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;proto: %s - cookie: %s&quot;</span>, proto, cookie);</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; ret = ssh_channel_request_x11(channel, 0, proto, cookie, 0);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; }</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>[0]) {</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Requesting an SSH exec channel&quot;</span>);</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; ret = ssh_channel_request_exec(channel, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>);</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; REMMINA_DEBUG (<span class="stringliteral">&quot;Requesting an SSH shell channel&quot;</span>);</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; ret = ssh_channel_request_shell(channel);</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; }</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; <span class="keywordflow">if</span> (ret != SSH_OK) {</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; REMMINA_WARNING (<span class="stringliteral">&quot;Could not request shell&quot;</span>);</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="comment">// TRANSLATORS: The placeholder %s is an error message</span></div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; <a class="code" href="remmina__ssh_8c.html#abc556f0a4335083436f6e19c204fa553">remmina_ssh_set_error</a>(REMMINA_SSH(shell), _(<span class="stringliteral">&quot;Could not request shell. %s&quot;</span>));</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; }</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a> = <a class="code" href="structitem.html#a456c6639914adbd3be8b4da351775d04">channel</a>;</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160;</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; GFile *rf = g_file_new_for_path(remminafile-&gt;filename);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160;</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</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;sshlogfolder&quot;</span>) == NULL)</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; dir = 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="l02935"></a><span class="lineno"> 2935</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; dir = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;sshlogfolder&quot;</span>);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</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;sshlogname&quot;</span>) == NULL)</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; sshlogname = g_strconcat(g_file_get_basename(rf), <span class="stringliteral">&quot;.&quot;</span>, <span class="stringliteral">&quot;log&quot;</span>, NULL);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; sshlogname = <a class="code" href="remmina__file_8c.html#a8eb1b213d9d08c6ad13683ce05f4355e">remmina_file_get_string</a>(remminafile, <span class="stringliteral">&quot;sshlogname&quot;</span>);</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; sshlogname = <a class="code" href="remmina__file_8c.html#afd8b12f3d84b4e201b9f465d5b8e0d03">remmina_file_format_properties</a>(remminafile, sshlogname);</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; filename = g_strconcat(dir, <span class="stringliteral">&quot;/&quot;</span>, sshlogname, NULL);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</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;sshsavesession&quot;</span>, FALSE)) {</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Saving session log to %s&quot;</span>, filename);</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; fp = fopen(filename, <span class="stringliteral">&quot;w&quot;</span>);</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; }</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160;</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; g_free(filename);</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Run_line: %s&quot;</span>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; <span class="keywordflow">if</span> (!shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> &amp;&amp; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>[0]) {</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; <span class="comment">//TODO: Confirm assumption - assuming null terminated gchar string</span></div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; ssh_channel_write(channel, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>, (gint)strlen(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>));</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160; ssh_channel_write(channel, <span class="stringliteral">&quot;\n&quot;</span>, (gint)1); <span class="comment">//TODO: Test this</span></div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Run_line written to channel&quot;</span>);</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; }</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; <span class="comment">// Create new event context.</span></div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a> = ssh_event_new();</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a> == NULL) {</div><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t get a event.&quot;</span>, __func__);</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; }</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;shell-&gt;slave: %d&quot;</span>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <span class="comment">// Add the fd to the event and assign it the callback.</span></div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; <span class="keywordflow">if</span> (ssh_event_add_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, <a class="code" href="remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61">events</a>, <a class="code" href="remmina__ssh_8c.html#a4c6a24749cbe8be70b2878de21f57c65">remmina_ssh_cp_to_ch_cb</a>, channel) != SSH_OK) {</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t add an fd to the event.&quot;</span>, __func__);</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; }</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; <span class="comment">// Remove the poll handle from session and assign them to the event.</span></div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; <span class="keywordflow">if</span> (ssh_event_add_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)-&gt;session) != SSH_OK) {</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; REMMINA_WARNING(<span class="stringliteral">&quot;Internal error in %s: Couldn&#39;t add the session to the event.&quot;</span>, __func__);</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; }</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <a class="code" href="remmina__ssh_8c.html#adfe0e9338fec4a1c03677595c15514d1">remmina_ssh_insert_item</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TRUE, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160; <span class="comment">// Initializes the ssh_callbacks_struct.</span></div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; <a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>.userdata = &amp;shell;</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; ssh_callbacks_init(&amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; <span class="comment">// Set the channel callback functions.</span></div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; ssh_set_channel_callbacks(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160;</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; <span class="keywordflow">do</span> {</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; ssh_event_dopoll(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, 1000);</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; } <span class="keywordflow">while</span>(!ssh_channel_is_closed(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>));</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160;</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> = TRUE;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <span class="comment">// Remove socket fd from event context.</span></div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; ret = ssh_event_remove_fd(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove socket fd from event context: %d&quot;</span>, ret);</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160;</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; <span class="comment">// Remove session object from event context.</span></div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; ret = ssh_event_remove_session(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>, REMMINA_SSH(shell)-&gt;session);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove session object from event context: %d&quot;</span>, ret);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160;</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160; <span class="comment">// Free event context.</span></div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; ssh_event_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ad5b89efd933067ed40c917a02905e1ea">event</a>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Free event context&quot;</span>);</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="comment">// Remove channel callback.</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ret = ssh_remove_channel_callbacks(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, &amp;<a class="code" href="remmina__ssh_8c.html#ab1ac2a91d14c557598f168f66ba130eb">channel_cb</a>);</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Remove channel callback: %d&quot;</span>, ret);</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</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;sshsavesession&quot;</span>, FALSE))</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; fclose(fp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a> = NULL;</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; ssh_channel_close(channel);</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; ssh_channel_send_eof(channel);</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; ssh_channel_free(channel);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160;</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a> = 0;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a>)</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; IDLE_ADD((GSourceFunc)remmina_ssh_call_exit_callback_on_main_thread, (gpointer)shell);</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;}</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160;gboolean</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;<a class="code" href="remmina__ssh_8h.html#a1c095a955af21b3ed9952ba2ea94691b">remmina_ssh_shell_open</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, <a class="code" href="remmina__ssh_8h.html#a4c56936cde97775b102a3e7b48fe5a01">RemminaSSHExitFunc</a> exit_callback, gpointer data)</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;{</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; gchar *slavedevice;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; <span class="keyword">struct </span>termios stermios;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> = posix_openpt(O_RDWR | O_NOCTTY);</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a> == -1 ||</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; grantpt(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>) == -1 ||</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; unlockpt(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>) == -1 ||</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; (slavedevice = ptsname(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#ab02f57e79ea0ba35f8a3788ef01a707f">master</a>)) == NULL ||</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a> = open(slavedevice, O_RDWR | O_NOCTTY)) &lt; 0) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; REMMINA_SSH(shell)-&gt;error = g_strdup(_(<span class="stringliteral">&quot;Could not create PTY device.&quot;</span>));</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; }</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160;</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <span class="comment">/* As per libssh documentation */</span></div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; tcgetattr(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, &amp;stermios);</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; stermios.c_iflag &amp;= ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160; stermios.c_oflag &amp;= ~OPOST;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; stermios.c_lflag &amp;= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160; stermios.c_cflag &amp;= ~(CSIZE | PARENB);</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; stermios.c_cflag |= CS8;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; tcsetattr(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>, TCSANOW, &amp;stermios);</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a> = exit_callback;</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#adedb04066148973fed2de9f04b80286d">user_data</a> = data;</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160; <span class="comment">/* Once the process started, we should always TRUE and assume the pthread will be created always */</span></div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; pthread_create(&amp;shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>, NULL, remmina_ssh_shell_thread, shell);</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160;}</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>&#160;<a class="code" href="remmina__ssh_8h.html#ac2d3f3b6550e4d1fe4caabe1df6af508">remmina_ssh_shell_set_size</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell, gint columns, gint rows)</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;{</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; LOCK_SSH(shell)</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>)</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; ssh_channel_change_pty_size(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a7c546634f855c217faa75ab4d4c7c2e2">channel</a>, columns, rows);</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; UNLOCK_SSH(shell)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;}</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;<a class="code" href="remmina__ssh_8h.html#a316f97b879e147ec52967344f6ad1d84">remmina_ssh_shell_free</a>(<a class="code" href="struct___remmina_s_s_h_shell.html">RemminaSSHShell</a> *shell)</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160;{</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; <span class="comment">//pthread_t thread = shell-&gt;thread;</span></div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; <span class="comment">// Close all OPENED X11 channel</span></div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; <a class="code" href="remmina__ssh_8c.html#a8a66c667543dd8c4c4f7c8d929863fae">remmina_ssh_close_all_x11_ch</a>(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a88090ecb372853a19640c883f5bf606a">exit_callback</a> = NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a6b2e8c1d9705b4c5b64a0e07a1159e80">closed</a> = TRUE;</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160; REMMINA_DEBUG(<span class="stringliteral">&quot;Cancelling the shell thread if needed&quot;</span>);</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) {</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; pthread_cancel(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>);</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>) pthread_join(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a878854125f24a8de520ec91066d0d226">thread</a>, NULL);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; }</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; close(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a78edb0cd27564e88b6c92b425a383df6">slave</a>);</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>) {</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; g_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a>);</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7">exec</a> = NULL;</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; }</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; <span class="keywordflow">if</span> (shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>) {</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; g_free(shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a>);</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; shell-&gt;<a class="code" href="struct___remmina_s_s_h_shell.html#af5c36c45f7e0beedee2e365da48a1331">run_line</a> = NULL;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; }</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; <span class="comment">/* It’s not necessary to close shell-&gt;slave since the other end (vte) will close it */</span>;</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <a class="code" href="remmina__ssh_8h.html#acdb9f57d2f9b47913715a8d8a0ea0c02">remmina_ssh_free</a>(REMMINA_SSH(shell));</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;}</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160;</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* HAVE_LIBSSH */</span><span class="preprocessor"></span></div><div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a17f0c32b34a9d3a56fbb8cb09ad896a0">REMMINA_SSH_AUTH_PARTIAL</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00110">remmina_ssh.h:110</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html">_RemminaSSHTunnel</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00148">remmina_ssh.h:148</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1a61bd3f6b00c5a5cf2983990eb6f0840f">REMMINA_SSH_AUTH_AUTHFAILED_RETRY_AFTER_PROMPT</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00112">remmina_ssh.h:112</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_afd166711167c39b8c1f6e8be3eb0c4e0"><div class="ttname"><a href="remmina__ssh_8h.html#afd166711167c39b8c1f6e8be3eb0c4e0">RemminaSSHTunnelBuffer</a></div><div class="ttdeci">struct _RemminaSSHTunnelBuffer RemminaSSHTunnelBuffer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00137">remmina_ssh.h:137</a></div></div>
@@ -167,7 +167,6 @@ $(document).ready(function(){initNavTree('remmina__ssh_8c_source.html','');});
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a37244b9fafd3ab48c0f11ad0b8cfdf91"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a37244b9fafd3ab48c0f11ad0b8cfdf91">_RemminaSSHTunnel::channels_out</a></div><div class="ttdeci">ssh_channel * channels_out</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00164">remmina_ssh.h:164</a></div></div>
<div class="ttc" id="remmina__ssh_8c_html_aa836e9642f5703d984c65513c7220b56"><div class="ttname"><a href="remmina__ssh_8c.html#aa836e9642f5703d984c65513c7220b56">remmina_ssh_cp_to_fd_cb</a></div><div class="ttdeci">static int remmina_ssh_cp_to_fd_cb(ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8c_source.html#l00527">remmina_ssh.c:527</a></div></div>
<div class="ttc" id="remmina__ssh_8h_html_a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735"><div class="ttname"><a href="remmina__ssh_8h.html#a879c265f2e8050e4e72a061ab3747ee1ab4ec94c8b9ef6d9b69d0b836750a8735">REMMINA_SSH_AUTH_FATAL_ERROR</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00114">remmina_ssh.h:114</a></div></div>
-<div class="ttc" id="rmnews_8c_html_a175c6dbec04bf34e3f2a5bd791d2d336"><div class="ttname"><a href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a></div><div class="ttdeci">static SoupSession * session</div><div class="ttdef"><b>Definition:</b> <a href="rmnews_8c_source.html#l00076">rmnews.c:76</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__protocol__widget_8c_html_a9092c29f585fdabaf0ce7e865670053b"><div class="ttname"><a href="remmina__protocol__widget_8c.html#a9092c29f585fdabaf0ce7e865670053b">remmina_protocol_widget_panel_question_yesno</a></div><div class="ttdeci">gint remmina_protocol_widget_panel_question_yesno(RemminaProtocolWidget *gp, const char *msg)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__protocol__widget_8c_source.html#l01684">remmina_protocol_widget.c:1684</a></div></div>
<div class="ttc" id="struct___remmina_s_s_h_tunnel_html_a155d773294b0671aac4e710e97d90047"><div class="ttname"><a href="struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047">_RemminaSSHTunnel::buffer</a></div><div class="ttdeci">gchar * buffer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__ssh_8h_source.html#l00162">remmina_ssh.h:162</a></div></div>
diff --git a/public/remmina__stats_8c_source.html b/public/remmina__stats_8c_source.html
index fde5f81bc..1babbd1bc 100644
--- a/public/remmina__stats_8c_source.html
+++ b/public/remmina__stats_8c_source.html
@@ -119,7 +119,7 @@ $(document).ready(function(){initNavTree('remmina__stats_8c_source.html','');});
<div class="ttc" id="remmina__utils_8c_html_ac00cb21c5cb5efcf7afc6eeae2147a75"><div class="ttname"><a href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a></div><div class="ttdeci">gchar * remmina_utils_get_lsb_description()</div><div class="ttdoc">Print the Distribution description as specified by the lsb_release command. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00349">remmina_utils.c:349</a></div></div>
<div class="ttc" id="remmina__sysinfo_8c_html_a79fd36823613c320001f0cdd2a97490f"><div class="ttname"><a href="remmina__sysinfo_8c.html#a79fd36823613c320001f0cdd2a97490f">remmina_sysinfo_get_gnome_shell_version</a></div><div class="ttdeci">gchar * remmina_sysinfo_get_gnome_shell_version()</div><div class="ttdoc">Query DBUS to get GNOME Shell version. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__sysinfo_8c_source.html#l00086">remmina_sysinfo.c:86</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_a73fbf1064af209f1f7272d737168971c"><div class="ttname"><a href="remmina__stats_8c.html#a73fbf1064af209f1f7272d737168971c">remmina_stats_get_gtk_backend</a></div><div class="ttdeci">JsonNode * remmina_stats_get_gtk_backend()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00381">remmina_stats.c:381</a></div></div>
-<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="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#l01143">remmina_pref.c:1143</a></div></div>
<div class="ttc" id="remmina__stats_8h_html"><div class="ttname"><a href="remmina__stats_8h.html">remmina_stats.h</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_a65500d6b5d93cc7e3fc3d72329ff3847"><div class="ttname"><a href="remmina__stats_8c.html#a65500d6b5d93cc7e3fc3d72329ff3847">remmina_stats_get_profiles</a></div><div class="ttdeci">JsonNode * remmina_stats_get_profiles()</div><div class="ttdoc">Add a JSON member profile_count with a child for each protocol used by the user. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00644">remmina_stats.c:644</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_a1dff2b06d5acefc9bd2f25508ab45328"><div class="ttname"><a href="remmina__stats_8c.html#a1dff2b06d5acefc9bd2f25508ab45328">remmina_profiles_get_data</a></div><div class="ttdeci">static void remmina_profiles_get_data(RemminaFile *remminafile, gpointer user_data)</div><div class="ttdoc">Given a remmina file, fills a structure containing profiles keys/value tuples. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00511">remmina_stats.c:511</a></div></div>
@@ -130,7 +130,7 @@ $(document).ready(function(){initNavTree('remmina__stats_8c_source.html','');});
<div class="ttc" id="remmina__sysinfo_8c_html_ae6ecf91edb905f3b2b39e33e05325590"><div class="ttname"><a href="remmina__sysinfo_8c.html#ae6ecf91edb905f3b2b39e33e05325590">remmina_sysinfo_is_appindicator_available</a></div><div class="ttdeci">gboolean remmina_sysinfo_is_appindicator_available()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sysinfo_8c_source.html#l00045">remmina_sysinfo.c:45</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_aee2ea5acceb2fbc3aa4ff21d136c5734"><div class="ttname"><a href="remmina__stats_8c.html#aee2ea5acceb2fbc3aa4ff21d136c5734">remmina_stats_get_indicator</a></div><div class="ttdeci">JsonNode * remmina_stats_get_indicator()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00457">remmina_stats.c:457</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_ae596da7901fb3b45b7290a1d70b3ea3a"><div class="ttname"><a href="remmina__stats_8c.html#ae596da7901fb3b45b7290a1d70b3ea3a">remmina_stats_get_wm_name</a></div><div class="ttdeci">JsonNode * remmina_stats_get_wm_name()</div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00413">remmina_stats.c:413</a></div></div>
-<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#l00086">remmina.c:86</a></div></div>
+<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#l00085">remmina.c:85</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a54cee350c4ecc6e77af835c4ba90df4c"><div class="ttname"><a href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a></div><div class="ttdeci">GHashTable * remmina_utils_get_etc_release()</div><div class="ttdoc">Print the distribution description if found. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00396">remmina_utils.c:396</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a116e7cd4565386fe531d3a6d1a3d3730"><div class="ttname"><a href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a></div><div class="ttdeci">const gchar * remmina_utils_get_kernel_arch()</div><div class="ttdoc">Return the machine hardware name as in &quot;uname -m&quot;. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00326">remmina_utils.c:326</a></div></div>
<div class="ttc" id="remmina__stats_8c_html_a56956b7db0c631121151b19b920176da"><div class="ttname"><a href="remmina__stats_8c.html#a56956b7db0c631121151b19b920176da">remmina_stats_get_kiosk_mode</a></div><div class="ttdeci">JsonNode * remmina_stats_get_kiosk_mode()</div><div class="ttdoc">Add a json member KIOSK which shows the status of the kiosk. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__stats_8c_source.html#l00775">remmina_stats.c:775</a></div></div>
diff --git a/public/remmina__unlock_8c_source.html b/public/remmina__unlock_8c_source.html
index 2ddc10b2e..e489ff3c2 100644
--- a/public/remmina__unlock_8c_source.html
+++ b/public/remmina__unlock_8c_source.html
@@ -92,8 +92,8 @@ $(document).ready(function(){initNavTree('remmina__unlock_8c_source.html','');})
<div class="ttc" id="remmina__unlock_8c_html_ac6e3a59f765b6d8012cb61005f1a3d18"><div class="ttname"><a href="remmina__unlock_8c.html#ac6e3a59f765b6d8012cb61005f1a3d18">remmina_unlock_cancel_clicked</a></div><div class="ttdeci">static void remmina_unlock_cancel_clicked(GtkButton *btn, gpointer user_data)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8c_source.html#l00106">remmina_unlock.c:106</a></div></div>
<div class="ttc" id="struct___remmina_unlock_dialog_html_a0a4303634a8342c96dd71e8d7d3e9e7d"><div class="ttname"><a href="struct___remmina_unlock_dialog.html#a0a4303634a8342c96dd71e8d7d3e9e7d">_RemminaUnlockDialog::button_unlock</a></div><div class="ttdeci">GtkButton * button_unlock</div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8h_source.html#l00046">remmina_unlock.h:46</a></div></div>
<div class="ttc" id="remmina__passwd_8c_html_a03a4dd5860c39db272a9fa913a95caea"><div class="ttname"><a href="remmina__passwd_8c.html#a03a4dd5860c39db272a9fa913a95caea">remmina_passwd</a></div><div class="ttdeci">gboolean remmina_passwd(GtkWindow *parent, gchar **unlock_password)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__passwd_8c_source.html#l00110">remmina_passwd.c:110</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01141">remmina_pref.c:1141</a></div></div>
-<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01165">remmina_pref.c:1165</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a4fbb2aff07d1fef416352d8b80d79e02"><div class="ttname"><a href="remmina__pref_8c.html#a4fbb2aff07d1fef416352d8b80d79e02">remmina_pref_set_value</a></div><div class="ttdeci">void remmina_pref_set_value(const gchar *key, const gchar *value)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01105">remmina_pref.c:1105</a></div></div>
+<div class="ttc" id="remmina__pref_8c_html_a6bcbf4cc3a58ed4ee9f087b4270d8fd6"><div class="ttname"><a href="remmina__pref_8c.html#a6bcbf4cc3a58ed4ee9f087b4270d8fd6">remmina_pref_get_value</a></div><div class="ttdeci">gchar * remmina_pref_get_value(const gchar *key)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__pref_8c_source.html#l01129">remmina_pref.c:1129</a></div></div>
<div class="ttc" id="remmina__sodium_8c_html_a6df48c8b8aafee07bfe41fb89581aa5f"><div class="ttname"><a href="remmina__sodium_8c.html#a6df48c8b8aafee07bfe41fb89581aa5f">remmina_sodium_pwhash_str_verify</a></div><div class="ttdeci">gint remmina_sodium_pwhash_str_verify(const char *key, const char *pass)</div><div class="ttdef"><b>Definition:</b> <a href="remmina__sodium_8c_source.html#l00159">remmina_sodium.c:159</a></div></div>
<div class="ttc" id="remmina__unlock_8c_html_a74421b834d52c638084568e39a6882c0"><div class="ttname"><a href="remmina__unlock_8c.html#a74421b834d52c638084568e39a6882c0">timer</a></div><div class="ttdeci">GTimer * timer</div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8c_source.html#l00054">remmina_unlock.c:54</a></div></div>
<div class="ttc" id="struct___remmina_unlock_dialog_html"><div class="ttname"><a href="struct___remmina_unlock_dialog.html">_RemminaUnlockDialog</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__unlock_8h_source.html#l00041">remmina_unlock.h:41</a></div></div>
diff --git a/public/remmina__utils_8c.html b/public/remmina__utils_8c.html
index 6e078e960..fb3d6ac71 100644
--- a/public/remmina__utils_8c.html
+++ b/public/remmina__utils_8c.html
@@ -159,9 +159,6 @@ Functions</h2></td></tr>
<tr class="memitem:aff7d3597f23cae366973218cc01a2ae8"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a> (const gchar *filename)</td></tr>
<tr class="memdesc:aff7d3597f23cae366973218cc01a2ae8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a hexadecimal string version of the SHA-1 digest of the contents of the named file. <a href="#aff7d3597f23cae366973218cc01a2ae8">More...</a><br /></td></tr>
<tr class="separator:aff7d3597f23cae366973218cc01a2ae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a483959ec642cece17e1b79506e71b00e"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a> ()</td></tr>
-<tr class="memdesc:a483959ec642cece17e1b79506e71b00e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random sting of chars to be used as part of UID for news or stats. <a href="#a483959ec642cece17e1b79506e71b00e">More...</a><br /></td></tr>
-<tr class="separator:a483959ec642cece17e1b79506e71b00e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
@@ -200,28 +197,6 @@ Variables</h2></td></tr>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a483959ec642cece17e1b79506e71b00e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a483959ec642cece17e1b79506e71b00e">&#9670;&nbsp;</a></span>remmina_gen_random_uuid()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">gchar* remmina_gen_random_uuid </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Generate a random sting of chars to be used as part of UID for news or stats. </p>
-<dl class="section return"><dt>Returns</dt><dd>a string or NULL. Caller must free it with g_free(). </dd></dl>
-
-<p class="definition">Definition at line <a class="el" href="remmina__utils_8c_source.html#l00505">505</a> of file <a class="el" href="remmina__utils_8c_source.html">remmina_utils.c</a>.</p>
-
-</div>
-</div>
<a id="aff7d3597f23cae366973218cc01a2ae8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff7d3597f23cae366973218cc01a2ae8">&#9670;&nbsp;</a></span>remmina_sha1_file()</h2>
diff --git a/public/remmina__utils_8c.js b/public/remmina__utils_8c.js
index 315989acc..4a6dd9632 100644
--- a/public/remmina__utils_8c.js
+++ b/public/remmina__utils_8c.js
@@ -4,7 +4,6 @@ var remmina__utils_8c =
[ "distro_info", "structdistro__info.html", "structdistro__info" ],
[ "DistroInfo", "remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1", null ],
[ "LSBDistroInfo", "remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba", null ],
- [ "remmina_gen_random_uuid", "remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e", null ],
[ "remmina_sha1_file", "remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8", null ],
[ "remmina_utils_get_etc_release", "remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c", null ],
[ "remmina_utils_get_kernel_arch", "remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730", null ],
diff --git a/public/remmina__utils_8c_source.html b/public/remmina__utils_8c_source.html
index 773d35e1e..ca21f4d3e 100644
--- a/public/remmina__utils_8c_source.html
+++ b/public/remmina__utils_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('remmina__utils_8c_source.html','');});
<div class="title">remmina_utils.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__utils_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="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;unistd.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;sys/utsname.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;locale.h&gt;</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"> 44</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</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__sodium_8h.html">remmina_sodium.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="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define EMPTY(ptr) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"> (!(ptr) || !*(ptr))</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"><a class="line" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c"> 54</a></span>&#160;<span class="keyword">struct </span>utsname <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>;</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;<span class="comment">/* Copyright (C) 1998 VMware, Inc. All rights reserved.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * Some of the code in this file is taken from the VMware open client.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html"> 59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsb__distro__info.html">lsb_distro_info</a> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html#a251763a49054183774e2082595537e47"> 60</a></span>&#160; gchar * <a class="code" href="structlsb__distro__info.html#a251763a49054183774e2082595537e47">name</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7"> 61</a></span>&#160; gchar * <a class="code" href="structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7">scanstring</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;} <a class="code" href="remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba">LSBDistroInfo</a>;</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;<span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * static LSBDistroInfo lsbFields[] = {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * { &quot;DISTRIB_ID=&quot;, &quot;DISTRIB_ID=%s&quot; },</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * { &quot;DISTRIB_RELEASE=&quot;, &quot;DISTRIB_RELEASE=%s&quot; },</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * { &quot;DISTRIB_CODENAME=&quot;, &quot;DISTRIB_CODENAME=%s&quot; },</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * { &quot;DISTRIB_DESCRIPTION=&quot;, &quot;DISTRIB_DESCRIPTION=%s&quot; },</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * { NULL, NULL },</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * };</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> */</span></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"><a class="line" href="structdistro__info.html"> 74</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structdistro__info.html">distro_info</a> {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structdistro__info.html#a27013edbc763fecb35337ca0affacfc2"> 75</a></span>&#160; gchar * <a class="code" href="structdistro__info.html#a27013edbc763fecb35337ca0affacfc2">name</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633"> 76</a></span>&#160; gchar * <a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;} <a class="code" href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a>;</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"><a class="line" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478"> 79</a></span>&#160;<span class="keyword">static</span> <a class="code" href="structdistro__info.html">DistroInfo</a> <a class="code" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478">distroArray</a>[] = {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; { <span class="stringliteral">&quot;RedHat&quot;</span>, <span class="stringliteral">&quot;/etc/redhat-release&quot;</span> },</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; { <span class="stringliteral">&quot;RedHat&quot;</span>, <span class="stringliteral">&quot;/etc/redhat_version&quot;</span> },</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; { <span class="stringliteral">&quot;Sun&quot;</span>, <span class="stringliteral">&quot;/etc/sun-release&quot;</span> },</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/SuSE-release&quot;</span> },</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/novell-release&quot;</span> },</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/sles-release&quot;</span> },</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/os-release&quot;</span> },</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; { <span class="stringliteral">&quot;Debian&quot;</span>, <span class="stringliteral">&quot;/etc/debian_version&quot;</span> },</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; { <span class="stringliteral">&quot;Debian&quot;</span>, <span class="stringliteral">&quot;/etc/debian_release&quot;</span> },</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; { <span class="stringliteral">&quot;Ubuntu&quot;</span>, <span class="stringliteral">&quot;/etc/lsb-release&quot;</span> },</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; { <span class="stringliteral">&quot;Mandrake&quot;</span>, <span class="stringliteral">&quot;/etc/mandrake-release&quot;</span> },</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; { <span class="stringliteral">&quot;Mandriva&quot;</span>, <span class="stringliteral">&quot;/etc/mandriva-release&quot;</span> },</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; { <span class="stringliteral">&quot;Mandrake&quot;</span>, <span class="stringliteral">&quot;/etc/mandrakelinux-release&quot;</span> },</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; { <span class="stringliteral">&quot;TurboLinux&quot;</span>, <span class="stringliteral">&quot;/etc/turbolinux-release&quot;</span> },</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; { <span class="stringliteral">&quot;Fedora Core&quot;</span>, <span class="stringliteral">&quot;/etc/fedora-release&quot;</span> },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; { <span class="stringliteral">&quot;Gentoo&quot;</span>, <span class="stringliteral">&quot;/etc/gentoo-release&quot;</span> },</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; { <span class="stringliteral">&quot;Novell&quot;</span>, <span class="stringliteral">&quot;/etc/nld-release&quot;</span> },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; { <span class="stringliteral">&quot;Annvix&quot;</span>, <span class="stringliteral">&quot;/etc/annvix-release&quot;</span> },</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; { <span class="stringliteral">&quot;Arch&quot;</span>, <span class="stringliteral">&quot;/etc/arch-release&quot;</span> },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; { <span class="stringliteral">&quot;Arklinux&quot;</span>, <span class="stringliteral">&quot;/etc/arklinux-release&quot;</span> },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { <span class="stringliteral">&quot;Aurox&quot;</span>, <span class="stringliteral">&quot;/etc/aurox-release&quot;</span> },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; { <span class="stringliteral">&quot;BlackCat&quot;</span>, <span class="stringliteral">&quot;/etc/blackcat-release&quot;</span> },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; { <span class="stringliteral">&quot;Cobalt&quot;</span>, <span class="stringliteral">&quot;/etc/cobalt-release&quot;</span> },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; { <span class="stringliteral">&quot;Conectiva&quot;</span>, <span class="stringliteral">&quot;/etc/conectiva-release&quot;</span> },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; { <span class="stringliteral">&quot;Immunix&quot;</span>, <span class="stringliteral">&quot;/etc/immunix-release&quot;</span> },</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; { <span class="stringliteral">&quot;Knoppix&quot;</span>, <span class="stringliteral">&quot;/etc/knoppix_version&quot;</span> },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; { <span class="stringliteral">&quot;Linux-From-Scratch&quot;</span>, <span class="stringliteral">&quot;/etc/lfs-release&quot;</span> },</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; { <span class="stringliteral">&quot;Linux-PPC&quot;</span>, <span class="stringliteral">&quot;/etc/linuxppc-release&quot;</span> },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; { <span class="stringliteral">&quot;MkLinux&quot;</span>, <span class="stringliteral">&quot;/etc/mklinux-release&quot;</span> },</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; { <span class="stringliteral">&quot;PLD&quot;</span>, <span class="stringliteral">&quot;/etc/pld-release&quot;</span> },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; { <span class="stringliteral">&quot;Slackware&quot;</span>, <span class="stringliteral">&quot;/etc/slackware-version&quot;</span> },</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; { <span class="stringliteral">&quot;Slackware&quot;</span>, <span class="stringliteral">&quot;/etc/slackware-release&quot;</span> },</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; { <span class="stringliteral">&quot;SMEServer&quot;</span>, <span class="stringliteral">&quot;/etc/e-smith-release&quot;</span> },</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; { <span class="stringliteral">&quot;Solaris&quot;</span>, <span class="stringliteral">&quot;/etc/release&quot;</span> },</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; { <span class="stringliteral">&quot;Solus&quot;</span>, <span class="stringliteral">&quot;/etc/solus-release&quot;</span> },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; { <span class="stringliteral">&quot;Tiny Sofa&quot;</span>, <span class="stringliteral">&quot;/etc/tinysofa-release&quot;</span> },</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; { <span class="stringliteral">&quot;UltraPenguin&quot;</span>, <span class="stringliteral">&quot;/etc/ultrapenguin-release&quot;</span> },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; { <span class="stringliteral">&quot;UnitedLinux&quot;</span>, <span class="stringliteral">&quot;/etc/UnitedLinux-release&quot;</span> },</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; { <span class="stringliteral">&quot;VALinux&quot;</span>, <span class="stringliteral">&quot;/etc/va-release&quot;</span> },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; { <span class="stringliteral">&quot;Yellow Dog&quot;</span>, <span class="stringliteral">&quot;/etc/yellowdog-release&quot;</span> },</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; { 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__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3"> 123</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(<span class="keyword">const</span> gchar *haystack, <span class="keyword">const</span> gchar *needle)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> gchar *sub;</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> (!*needle)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> -1;</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; sub = strstr(haystack, needle);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (!sub)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> sub - haystack;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</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;<span class="comment">/* end can be -1 for haystack-&gt;len.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * returns: position of found text or -1.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * (C) Taken from geany */</span></div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be"> 141</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355">remmina_utils_string_find</a>(GString *haystack, gint start, gint end, <span class="keyword">const</span> gchar *needle)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; gint pos;</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; g_return_val_if_fail(haystack != NULL, -1);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (haystack-&gt;len == 0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> -1;</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; g_return_val_if_fail(start &gt;= 0, -1);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (start &gt;= (gint)haystack-&gt;len)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> -1;</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; g_return_val_if_fail(!EMPTY(needle), -1);</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">if</span> (end &lt; 0)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; end = haystack-&gt;len;</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; pos = <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(haystack-&gt;str + start, needle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> -1;</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; pos += start;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (pos &gt;= end)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> pos;</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;<span class="comment">/* Replaces @len characters from offset @a pos.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * len can be -1 to replace the remainder of @a str.</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * returns: pos + strlen(replace).</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * (C) Taken from geany */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4"> 173</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(GString *str, gint pos, gint len, <span class="keyword">const</span> gchar *replace)</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; g_string_erase(str, pos, len);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (replace) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_string_insert(str, pos, replace);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; pos += strlen(replace);</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; <span class="keywordflow">return</span> pos;</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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66"> 193</a></span>&#160;guint <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(GString *haystack, <span class="keyword">const</span> gchar *needle, <span class="keyword">const</span> gchar *replace)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; guint count = 0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gint pos = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; gsize needle_length = strlen(needle);</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">while</span> (1) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; pos = <a class="code" href="remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355">remmina_utils_string_find</a>(haystack, pos, -1, needle);</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; <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; pos = <a class="code" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(haystack, pos, needle_length, replace);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; count++;</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="keywordflow">return</span> count;</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="l00220"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d"> 220</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a>(<span class="keyword">const</span> gchar *s)</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; gchar *p = g_malloc(strlen(s) + 1);</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; <span class="keywordflow">if</span> (p) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gchar *p2 = p;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">while</span> (*s != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (*s != <span class="charliteral">&#39;\t&#39;</span> &amp;&amp; *s != <span class="charliteral">&#39;\n&#39;</span> &amp;&amp; *s != <span class="charliteral">&#39;\&quot;&#39;</span>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; *p2++ = *s++;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; ++s;</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; *p2 = <span class="charliteral">&#39;\0&#39;</span>;</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; <span class="keywordflow">return</span> p;</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;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa"> 251</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa">remmina_utils_read_distrofile</a>(gchar *filename)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; gsize file_sz;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; gchar *distro_desc = NULL;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; GError *err = 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; <span class="keywordflow">if</span> (g_stat(filename, &amp;st) == -1) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not stat the file %s\n&quot;</span>, __func__, filename);</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; g_debug(<span class="stringliteral">&quot;%s: File %s is %lu bytes long\n&quot;</span>, __func__, filename, st.st_size);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (st.st_size &gt; 131072)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> NULL;</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; <span class="keywordflow">if</span> (!g_file_get_contents(filename, &amp;distro_desc, &amp;file_sz, &amp;err)) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not get the file content%s: %s\n&quot;</span>, __func__, filename, err-&gt;message);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; g_error_free(err);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</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; <span class="keywordflow">if</span> (file_sz == 0) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; g_debug(<span class="stringliteral">&quot;%s: Cannot work with empty file.\n&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</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; g_debug(<span class="stringliteral">&quot;%s: Distro description %s\n&quot;</span>, __func__, distro_desc);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> distro_desc;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324"> 287</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a>()</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; gchar *lang = setlocale(LC_ALL, NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; gchar *ptr;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (!lang || lang[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; lang = <span class="stringliteral">&quot;en_US\0&quot;</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; ptr = strchr(lang, <span class="charliteral">&#39;.&#39;</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (ptr != NULL)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; *ptr = <span class="charliteral">&#39;\0&#39;</span>;</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;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> lang;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522"> 306</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>()</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.sysname;</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;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa"> 312</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.release;</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;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730"> 326</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.machine;</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;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22"> 336</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; gchar *lsb_id = NULL;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -si&quot;</span>, &amp;lsb_id, NULL, NULL, NULL))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> lsb_id;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> NULL;</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="l00349"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75"> 349</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; gchar *lsb_description = NULL;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; GError *err = NULL;</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; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sd&quot;</span>, &amp;lsb_description, NULL, NULL, &amp;err)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> lsb_description;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not execute lsb_release %s\n&quot;</span>, __func__, err-&gt;message);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; g_error_free(err);</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; g_debug(<span class="stringliteral">&quot;%s: lsb_release %s\n&quot;</span>, __func__, lsb_description);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca"> 369</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; gchar *lsb_release = NULL;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sr&quot;</span>, &amp;lsb_release, NULL, NULL, NULL))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> lsb_release;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> NULL;</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"> 377</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c"> 382</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils_get_lsb_codename</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gchar *lsb_codename = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sc&quot;</span>, &amp;lsb_codename, NULL, NULL, NULL))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> lsb_codename;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c"> 396</a></span>&#160;GHashTable *<a class="code" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; gchar *etc_release = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; gint i;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; GHashTable *r;</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; r = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (i = 0; distroArray[i].<a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a> != NULL; i++) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; g_debug(<span class="stringliteral">&quot;%s: File %s\n&quot;</span>, __func__, distroArray[i].filename);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; etc_release = <a class="code" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa">remmina_utils_read_distrofile</a>(distroArray[i].filename);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (etc_release) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (etc_release[0] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; g_debug(<span class="stringliteral">&quot;%s: Distro description %s\n&quot;</span>, __func__, etc_release);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; g_hash_table_insert(r, distroArray[i].filename, etc_release);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; g_free(etc_release);</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; }</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; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99"> 424</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils_get_os_info</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; gchar *kernel_string;</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; <span class="keywordflow">if</span> (uname(&amp;<a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>) == -1)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; g_print(<span class="stringliteral">&quot;uname:&quot;</span>);</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; kernel_string = g_strdup_printf(<span class="stringliteral">&quot;%s;%s;%s\n&quot;</span>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>(),</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>(),</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>());</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (!kernel_string || kernel_string[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (kernel_string)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; g_free(kernel_string);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; kernel_string = g_strdup_printf(<span class="stringliteral">&quot;%s;%s;%s\n&quot;</span>,</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>,</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>);</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; <span class="keywordflow">return</span> kernel_string;</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;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8"> 460</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a>(<span class="keyword">const</span> gchar *filename)</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; FILE *file;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#define BLOCK_SIZE 4096</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> block[BLOCK_SIZE];</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">size_t</span> bytes_read;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; GChecksum *sha1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">char</span> *digest = NULL;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; file = fopen(filename, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (file == NULL)</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> NULL;</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; sha1 = g_checksum_new(G_CHECKSUM_SHA1);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (sha1 == NULL)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">goto</span> DONE;</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; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; bytes_read = fread(block, 1, 4096, file);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (bytes_read == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (feof(file))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ferror(file))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; g_checksum_update(sha1, block, bytes_read);</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; }</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; digest = g_strdup(g_checksum_get_string(sha1));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;DONE:</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (sha1)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; g_checksum_free(sha1);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> (file)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; fclose(file);</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; <span class="keywordflow">return</span> digest;</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;</div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e"> 505</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a>()</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; gchar *result;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> alpha[] = <span class="stringliteral">&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&quot;</span>;</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; result = g_malloc0(15);</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; <span class="keywordflow">for</span> (i = 0; i &lt; 7; i++)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; result[i] = alpha[randombytes_uniform(<span class="keyword">sizeof</span>(alpha))];</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; <span class="keywordflow">for</span> (i = 0; i &lt; 7; i++)</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; result[i + 7] = alpha[randombytes_uniform(<span class="keyword">sizeof</span>(alpha))];</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;}</div><div class="ttc" id="remmina__utils_8c_html_a1371483cedecdda522244523c1bb96b1"><div class="ttname"><a href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a></div><div class="ttdeci">struct distro_info DistroInfo</div></div>
+<a href="remmina__utils_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="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;unistd.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &lt;sys/utsname.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &lt;locale.h&gt;</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"> 44</span>&#160;<span class="preprocessor">#include &lt;glib/gi18n.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &lt;glib/gstdio.h&gt;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &lt;gio/gio.h&gt;</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__sodium_8h.html">remmina_sodium.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="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define EMPTY(ptr) \</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"> (!(ptr) || !*(ptr))</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"><a class="line" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c"> 54</a></span>&#160;<span class="keyword">struct </span>utsname <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>;</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;<span class="comment">/* Copyright (C) 1998 VMware, Inc. All rights reserved.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * Some of the code in this file is taken from the VMware open client.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html"> 59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structlsb__distro__info.html">lsb_distro_info</a> {</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html#a251763a49054183774e2082595537e47"> 60</a></span>&#160; gchar * <a class="code" href="structlsb__distro__info.html#a251763a49054183774e2082595537e47">name</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7"> 61</a></span>&#160; gchar * <a class="code" href="structlsb__distro__info.html#a7aba92d963bcaed1a5dda7b7be4fa6d7">scanstring</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;} <a class="code" href="remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba">LSBDistroInfo</a>;</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;<span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * static LSBDistroInfo lsbFields[] = {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * { &quot;DISTRIB_ID=&quot;, &quot;DISTRIB_ID=%s&quot; },</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * { &quot;DISTRIB_RELEASE=&quot;, &quot;DISTRIB_RELEASE=%s&quot; },</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * { &quot;DISTRIB_CODENAME=&quot;, &quot;DISTRIB_CODENAME=%s&quot; },</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * { &quot;DISTRIB_DESCRIPTION=&quot;, &quot;DISTRIB_DESCRIPTION=%s&quot; },</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * { NULL, NULL },</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * };</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> */</span></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"><a class="line" href="structdistro__info.html"> 74</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structdistro__info.html">distro_info</a> {</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structdistro__info.html#a27013edbc763fecb35337ca0affacfc2"> 75</a></span>&#160; gchar * <a class="code" href="structdistro__info.html#a27013edbc763fecb35337ca0affacfc2">name</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633"> 76</a></span>&#160; gchar * <a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;} <a class="code" href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a>;</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"><a class="line" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478"> 79</a></span>&#160;<span class="keyword">static</span> <a class="code" href="structdistro__info.html">DistroInfo</a> <a class="code" href="remmina__utils_8c.html#a819abe021d49cefa64ffc7981aacc478">distroArray</a>[] = {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; { <span class="stringliteral">&quot;RedHat&quot;</span>, <span class="stringliteral">&quot;/etc/redhat-release&quot;</span> },</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; { <span class="stringliteral">&quot;RedHat&quot;</span>, <span class="stringliteral">&quot;/etc/redhat_version&quot;</span> },</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; { <span class="stringliteral">&quot;Sun&quot;</span>, <span class="stringliteral">&quot;/etc/sun-release&quot;</span> },</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/SuSE-release&quot;</span> },</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/novell-release&quot;</span> },</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/sles-release&quot;</span> },</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; { <span class="stringliteral">&quot;SuSE&quot;</span>, <span class="stringliteral">&quot;/etc/os-release&quot;</span> },</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; { <span class="stringliteral">&quot;Debian&quot;</span>, <span class="stringliteral">&quot;/etc/debian_version&quot;</span> },</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; { <span class="stringliteral">&quot;Debian&quot;</span>, <span class="stringliteral">&quot;/etc/debian_release&quot;</span> },</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; { <span class="stringliteral">&quot;Ubuntu&quot;</span>, <span class="stringliteral">&quot;/etc/lsb-release&quot;</span> },</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; { <span class="stringliteral">&quot;Mandrake&quot;</span>, <span class="stringliteral">&quot;/etc/mandrake-release&quot;</span> },</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; { <span class="stringliteral">&quot;Mandriva&quot;</span>, <span class="stringliteral">&quot;/etc/mandriva-release&quot;</span> },</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; { <span class="stringliteral">&quot;Mandrake&quot;</span>, <span class="stringliteral">&quot;/etc/mandrakelinux-release&quot;</span> },</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; { <span class="stringliteral">&quot;TurboLinux&quot;</span>, <span class="stringliteral">&quot;/etc/turbolinux-release&quot;</span> },</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; { <span class="stringliteral">&quot;Fedora Core&quot;</span>, <span class="stringliteral">&quot;/etc/fedora-release&quot;</span> },</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; { <span class="stringliteral">&quot;Gentoo&quot;</span>, <span class="stringliteral">&quot;/etc/gentoo-release&quot;</span> },</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; { <span class="stringliteral">&quot;Novell&quot;</span>, <span class="stringliteral">&quot;/etc/nld-release&quot;</span> },</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; { <span class="stringliteral">&quot;Annvix&quot;</span>, <span class="stringliteral">&quot;/etc/annvix-release&quot;</span> },</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; { <span class="stringliteral">&quot;Arch&quot;</span>, <span class="stringliteral">&quot;/etc/arch-release&quot;</span> },</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; { <span class="stringliteral">&quot;Arklinux&quot;</span>, <span class="stringliteral">&quot;/etc/arklinux-release&quot;</span> },</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; { <span class="stringliteral">&quot;Aurox&quot;</span>, <span class="stringliteral">&quot;/etc/aurox-release&quot;</span> },</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; { <span class="stringliteral">&quot;BlackCat&quot;</span>, <span class="stringliteral">&quot;/etc/blackcat-release&quot;</span> },</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; { <span class="stringliteral">&quot;Cobalt&quot;</span>, <span class="stringliteral">&quot;/etc/cobalt-release&quot;</span> },</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; { <span class="stringliteral">&quot;Conectiva&quot;</span>, <span class="stringliteral">&quot;/etc/conectiva-release&quot;</span> },</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; { <span class="stringliteral">&quot;Immunix&quot;</span>, <span class="stringliteral">&quot;/etc/immunix-release&quot;</span> },</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; { <span class="stringliteral">&quot;Knoppix&quot;</span>, <span class="stringliteral">&quot;/etc/knoppix_version&quot;</span> },</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; { <span class="stringliteral">&quot;Linux-From-Scratch&quot;</span>, <span class="stringliteral">&quot;/etc/lfs-release&quot;</span> },</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; { <span class="stringliteral">&quot;Linux-PPC&quot;</span>, <span class="stringliteral">&quot;/etc/linuxppc-release&quot;</span> },</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; { <span class="stringliteral">&quot;MkLinux&quot;</span>, <span class="stringliteral">&quot;/etc/mklinux-release&quot;</span> },</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; { <span class="stringliteral">&quot;PLD&quot;</span>, <span class="stringliteral">&quot;/etc/pld-release&quot;</span> },</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; { <span class="stringliteral">&quot;Slackware&quot;</span>, <span class="stringliteral">&quot;/etc/slackware-version&quot;</span> },</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; { <span class="stringliteral">&quot;Slackware&quot;</span>, <span class="stringliteral">&quot;/etc/slackware-release&quot;</span> },</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; { <span class="stringliteral">&quot;SMEServer&quot;</span>, <span class="stringliteral">&quot;/etc/e-smith-release&quot;</span> },</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; { <span class="stringliteral">&quot;Solaris&quot;</span>, <span class="stringliteral">&quot;/etc/release&quot;</span> },</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; { <span class="stringliteral">&quot;Solus&quot;</span>, <span class="stringliteral">&quot;/etc/solus-release&quot;</span> },</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; { <span class="stringliteral">&quot;Tiny Sofa&quot;</span>, <span class="stringliteral">&quot;/etc/tinysofa-release&quot;</span> },</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; { <span class="stringliteral">&quot;UltraPenguin&quot;</span>, <span class="stringliteral">&quot;/etc/ultrapenguin-release&quot;</span> },</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; { <span class="stringliteral">&quot;UnitedLinux&quot;</span>, <span class="stringliteral">&quot;/etc/UnitedLinux-release&quot;</span> },</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; { <span class="stringliteral">&quot;VALinux&quot;</span>, <span class="stringliteral">&quot;/etc/va-release&quot;</span> },</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; { <span class="stringliteral">&quot;Yellow Dog&quot;</span>, <span class="stringliteral">&quot;/etc/yellowdog-release&quot;</span> },</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; { 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__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3"> 123</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(<span class="keyword">const</span> gchar *haystack, <span class="keyword">const</span> gchar *needle)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> gchar *sub;</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> (!*needle)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> -1;</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; sub = strstr(haystack, needle);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (!sub)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> sub - haystack;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;}</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;<span class="comment">/* end can be -1 for haystack-&gt;len.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * returns: position of found text or -1.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * (C) Taken from geany */</span></div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be"> 141</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355">remmina_utils_string_find</a>(GString *haystack, gint start, gint end, <span class="keyword">const</span> gchar *needle)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; gint pos;</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; g_return_val_if_fail(haystack != NULL, -1);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (haystack-&gt;len == 0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> -1;</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; g_return_val_if_fail(start &gt;= 0, -1);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (start &gt;= (gint)haystack-&gt;len)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> -1;</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; g_return_val_if_fail(!EMPTY(needle), -1);</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">if</span> (end &lt; 0)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; end = haystack-&gt;len;</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; pos = <a class="code" href="remmina__utils_8c.html#ae4318060ee81f8fbd907904892dd71d3">remmina_utils_strpos</a>(haystack-&gt;str + start, needle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> -1;</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; pos += start;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (pos &gt;= end)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">return</span> pos;</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;<span class="comment">/* Replaces @len characters from offset @a pos.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * len can be -1 to replace the remainder of @a str.</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * returns: pos + strlen(replace).</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * (C) Taken from geany */</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4"> 173</a></span>&#160;gint <a class="code" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(GString *str, gint pos, gint len, <span class="keyword">const</span> gchar *replace)</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; g_string_erase(str, pos, len);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (replace) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; g_string_insert(str, pos, replace);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; pos += strlen(replace);</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; <span class="keywordflow">return</span> pos;</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;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66"> 193</a></span>&#160;guint <a class="code" href="remmina__utils_8c.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(GString *haystack, <span class="keyword">const</span> gchar *needle, <span class="keyword">const</span> gchar *replace)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; guint count = 0;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; gint pos = 0;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; gsize needle_length = strlen(needle);</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">while</span> (1) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; pos = <a class="code" href="remmina__utils_8c.html#a75eb5f79df692dfe4db221d03a5fa355">remmina_utils_string_find</a>(haystack, pos, -1, needle);</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; <span class="keywordflow">if</span> (pos == -1)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; pos = <a class="code" href="remmina__utils_8c.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(haystack, pos, needle_length, replace);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; count++;</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="keywordflow">return</span> count;</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="l00220"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d"> 220</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a>(<span class="keyword">const</span> gchar *s)</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; gchar *p = g_malloc(strlen(s) + 1);</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; <span class="keywordflow">if</span> (p) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gchar *p2 = p;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">while</span> (*s != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (*s != <span class="charliteral">&#39;\t&#39;</span> &amp;&amp; *s != <span class="charliteral">&#39;\n&#39;</span> &amp;&amp; *s != <span class="charliteral">&#39;\&quot;&#39;</span>)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; *p2++ = *s++;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; ++s;</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; *p2 = <span class="charliteral">&#39;\0&#39;</span>;</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; <span class="keywordflow">return</span> p;</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;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa"> 251</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa">remmina_utils_read_distrofile</a>(gchar *filename)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; gsize file_sz;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">struct </span>stat st;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; gchar *distro_desc = NULL;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; GError *err = 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; <span class="keywordflow">if</span> (g_stat(filename, &amp;st) == -1) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not stat the file %s\n&quot;</span>, __func__, filename);</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; g_debug(<span class="stringliteral">&quot;%s: File %s is %lu bytes long\n&quot;</span>, __func__, filename, st.st_size);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (st.st_size &gt; 131072)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> NULL;</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; <span class="keywordflow">if</span> (!g_file_get_contents(filename, &amp;distro_desc, &amp;file_sz, &amp;err)) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not get the file content%s: %s\n&quot;</span>, __func__, filename, err-&gt;message);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; g_error_free(err);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</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; <span class="keywordflow">if</span> (file_sz == 0) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; g_debug(<span class="stringliteral">&quot;%s: Cannot work with empty file.\n&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</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; g_debug(<span class="stringliteral">&quot;%s: Distro description %s\n&quot;</span>, __func__, distro_desc);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> distro_desc;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;}</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324"> 287</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a>()</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; gchar *lang = setlocale(LC_ALL, NULL);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; gchar *ptr;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (!lang || lang[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; lang = <span class="stringliteral">&quot;en_US\0&quot;</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; ptr = strchr(lang, <span class="charliteral">&#39;.&#39;</span>);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (ptr != NULL)</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; *ptr = <span class="charliteral">&#39;\0&#39;</span>;</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;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> lang;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;}</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522"> 306</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>()</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.sysname;</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;</div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa"> 312</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.release;</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;</div><div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730"> 326</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>.machine;</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;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22"> 336</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; gchar *lsb_id = NULL;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -si&quot;</span>, &amp;lsb_id, NULL, NULL, NULL))</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> lsb_id;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> NULL;</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="l00349"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75"> 349</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; gchar *lsb_description = NULL;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; GError *err = NULL;</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; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sd&quot;</span>, &amp;lsb_description, NULL, NULL, &amp;err)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> lsb_description;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; g_debug(<span class="stringliteral">&quot;%s: could not execute lsb_release %s\n&quot;</span>, __func__, err-&gt;message);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; g_error_free(err);</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; g_debug(<span class="stringliteral">&quot;%s: lsb_release %s\n&quot;</span>, __func__, lsb_description);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca"> 369</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; gchar *lsb_release = NULL;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sr&quot;</span>, &amp;lsb_release, NULL, NULL, NULL))</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> lsb_release;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> NULL;</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"> 377</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c"> 382</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils_get_lsb_codename</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; gchar *lsb_codename = NULL;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">if</span> (g_spawn_command_line_sync(<span class="stringliteral">&quot;/usr/bin/lsb_release -sc&quot;</span>, &amp;lsb_codename, NULL, NULL, NULL))</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> lsb_codename;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;}</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c"> 396</a></span>&#160;GHashTable *<a class="code" href="remmina__utils_8c.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; gchar *etc_release = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; gint i;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; GHashTable *r;</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; r = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (i = 0; distroArray[i].<a class="code" href="structdistro__info.html#a1999084b11586bdb56bc2453fce7f633">filename</a> != NULL; i++) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; g_debug(<span class="stringliteral">&quot;%s: File %s\n&quot;</span>, __func__, distroArray[i].filename);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; etc_release = <a class="code" href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa">remmina_utils_read_distrofile</a>(distroArray[i].filename);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (etc_release) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span> (etc_release[0] != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; g_debug(<span class="stringliteral">&quot;%s: Distro description %s\n&quot;</span>, __func__, etc_release);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; g_hash_table_insert(r, distroArray[i].filename, etc_release);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; g_free(etc_release);</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; }</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; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99"> 424</a></span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils_get_os_info</a>()</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; gchar *kernel_string;</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; <span class="keywordflow">if</span> (uname(&amp;<a class="code" href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a>) == -1)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; g_print(<span class="stringliteral">&quot;uname:&quot;</span>);</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; kernel_string = g_strdup_printf(<span class="stringliteral">&quot;%s;%s;%s\n&quot;</span>,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="remmina__utils_8c.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>(),</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="remmina__utils_8c.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>(),</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="remmina__utils_8c.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>());</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (!kernel_string || kernel_string[0] == <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (kernel_string)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; g_free(kernel_string);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; kernel_string = g_strdup_printf(<span class="stringliteral">&quot;%s;%s;%s\n&quot;</span>,</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>,</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="stringliteral">&quot;UNKNOWN&quot;</span>);</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; <span class="keywordflow">return</span> kernel_string;</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;</div><div class="line"><a name="l00460"></a><span class="lineno"><a class="line" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8"> 460</a></span>&#160;gchar *<a class="code" href="remmina__utils_8c.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a>(<span class="keyword">const</span> gchar *filename)</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; FILE *file;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#define BLOCK_SIZE 4096</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> block[BLOCK_SIZE];</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">size_t</span> bytes_read;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; GChecksum *sha1;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">char</span> *digest = NULL;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; file = fopen(filename, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (file == NULL)</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> NULL;</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; sha1 = g_checksum_new(G_CHECKSUM_SHA1);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (sha1 == NULL)</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">goto</span> DONE;</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; <span class="keywordflow">while</span> (1) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; bytes_read = fread(block, 1, 4096, file);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (bytes_read == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">if</span> (feof(file))</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ferror(file))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">goto</span> DONE;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; g_checksum_update(sha1, block, bytes_read);</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; }</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; digest = g_strdup(g_checksum_get_string(sha1));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;DONE:</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (sha1)</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; g_checksum_free(sha1);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> (file)</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; fclose(file);</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; <span class="keywordflow">return</span> digest;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="remmina__utils_8c_html_a1371483cedecdda522244523c1bb96b1"><div class="ttname"><a href="remmina__utils_8c.html#a1371483cedecdda522244523c1bb96b1">DistroInfo</a></div><div class="ttdeci">struct distro_info DistroInfo</div></div>
<div class="ttc" id="structdistro__info_html"><div class="ttname"><a href="structdistro__info.html">distro_info</a></div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00074">remmina_utils.c:74</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__utils_8c_html_a8b6ee6e66fba40ddaf4e735ba9d4208c"><div class="ttname"><a href="remmina__utils_8c.html#a8b6ee6e66fba40ddaf4e735ba9d4208c">u</a></div><div class="ttdeci">struct utsname u</div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00054">remmina_utils.c:54</a></div></div>
@@ -101,7 +101,6 @@ $(document).ready(function(){initNavTree('remmina__utils_8c_source.html','');});
<div class="ttc" id="remmina__utils_8c_html_afe83bd0997a1054045e17d3f66c8bb0d"><div class="ttname"><a href="remmina__utils_8c.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a></div><div class="ttdeci">gchar * remmina_utils_string_strip(const gchar *s)</div><div class="ttdoc">Strip , and &quot; from a given string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00220">remmina_utils.c:220</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a297576937e5f9be372f1861a87c41dfa"><div class="ttname"><a href="remmina__utils_8c.html#a297576937e5f9be372f1861a87c41dfa">remmina_utils_read_distrofile</a></div><div class="ttdeci">static gchar * remmina_utils_read_distrofile(gchar *filename)</div><div class="ttdoc">OS related functions. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00251">remmina_utils.c:251</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a5ee50df5d7585d229a154a712c9161ca"><div class="ttname"><a href="remmina__utils_8c.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a></div><div class="ttdeci">gchar * remmina_utils_get_lsb_release()</div><div class="ttdoc">Print the Distribution release name as specified by the lsb_release command. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00369">remmina_utils.c:369</a></div></div>
-<div class="ttc" id="remmina__utils_8c_html_a483959ec642cece17e1b79506e71b00e"><div class="ttname"><a href="remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a></div><div class="ttdeci">gchar * remmina_gen_random_uuid()</div><div class="ttdoc">Generate a random sting of chars to be used as part of UID for news or stats. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00505">remmina_utils.c:505</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a0f10e190a6dd212fcb0cf36ce81c8324"><div class="ttname"><a href="remmina__utils_8c.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a></div><div class="ttdeci">gchar * remmina_utils_get_lang()</div><div class="ttdoc">Return the current language defined in the LC_ALL. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00287">remmina_utils.c:287</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_af1acfeca84e3efd47ab1ef8365f94f99"><div class="ttname"><a href="remmina__utils_8c.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils_get_os_info</a></div><div class="ttdeci">const gchar * remmina_utils_get_os_info()</div><div class="ttdoc">A sample function to show how use the other fOS related functions. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00424">remmina_utils.c:424</a></div></div>
<div class="ttc" id="remmina__utils_8c_html_a376b0273338fd875054d93b329e85fba"><div class="ttname"><a href="remmina__utils_8c.html#a376b0273338fd875054d93b329e85fba">LSBDistroInfo</a></div><div class="ttdeci">struct lsb_distro_info LSBDistroInfo</div></div>
diff --git a/public/remmina__utils_8h.html b/public/remmina__utils_8h.html
index a883fe23c..339e08404 100644
--- a/public/remmina__utils_8h.html
+++ b/public/remmina__utils_8h.html
@@ -140,37 +140,12 @@ Functions</h2></td></tr>
<tr class="memitem:aff7d3597f23cae366973218cc01a2ae8"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a> (const gchar *filename)</td></tr>
<tr class="memdesc:aff7d3597f23cae366973218cc01a2ae8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a hexadecimal string version of the SHA-1 digest of the contents of the named file. <a href="#aff7d3597f23cae366973218cc01a2ae8">More...</a><br /></td></tr>
<tr class="separator:aff7d3597f23cae366973218cc01a2ae8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a483959ec642cece17e1b79506e71b00e"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a> ()</td></tr>
-<tr class="memdesc:a483959ec642cece17e1b79506e71b00e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random sting of chars to be used as part of UID for news or stats. <a href="#a483959ec642cece17e1b79506e71b00e">More...</a><br /></td></tr>
-<tr class="separator:a483959ec642cece17e1b79506e71b00e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>General utility functions, non-GTK related. </p>
<p class="definition">Definition in file <a class="el" href="remmina__utils_8h_source.html">remmina_utils.h</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
-<a id="a483959ec642cece17e1b79506e71b00e"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a483959ec642cece17e1b79506e71b00e">&#9670;&nbsp;</a></span>remmina_gen_random_uuid()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">gchar* remmina_gen_random_uuid </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Generate a random sting of chars to be used as part of UID for news or stats. </p>
-<dl class="section return"><dt>Returns</dt><dd>a string or NULL. Caller must free it with g_free(). </dd></dl>
-
-<p class="definition">Definition at line <a class="el" href="remmina__utils_8c_source.html#l00505">505</a> of file <a class="el" href="remmina__utils_8c_source.html">remmina_utils.c</a>.</p>
-
-</div>
-</div>
<a id="aff7d3597f23cae366973218cc01a2ae8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff7d3597f23cae366973218cc01a2ae8">&#9670;&nbsp;</a></span>remmina_sha1_file()</h2>
diff --git a/public/remmina__utils_8h.js b/public/remmina__utils_8h.js
index 5927433f1..5e30c9220 100644
--- a/public/remmina__utils_8h.js
+++ b/public/remmina__utils_8h.js
@@ -1,6 +1,5 @@
var remmina__utils_8h =
[
- [ "remmina_gen_random_uuid", "remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e", null ],
[ "remmina_sha1_file", "remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8", null ],
[ "remmina_utils_get_etc_release", "remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c", null ],
[ "remmina_utils_get_kernel_arch", "remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730", null ],
diff --git a/public/remmina__utils_8h_source.html b/public/remmina__utils_8h_source.html
index c8a89a951..0d6535b99 100644
--- a/public/remmina__utils_8h_source.html
+++ b/public/remmina__utils_8h_source.html
@@ -86,8 +86,7 @@ $(document).ready(function(){initNavTree('remmina__utils_8h_source.html','');});
<div class="title">remmina_utils.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="remmina__utils_8h.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="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#pragma once</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 &lt;glib.h&gt;</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"> 44</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;gint <a class="code" href="remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be">remmina_utils_string_find</a>(GString *haystack, gint start, gint end, <span class="keyword">const</span> gchar *needle);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;gint <a class="code" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(GString *str, gint pos, gint len, <span class="keyword">const</span> gchar *replace);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;guint <a class="code" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(GString *haystack, <span class="keyword">const</span> gchar *needle, <span class="keyword">const</span> gchar *replace);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a>(<span class="keyword">const</span> gchar *s);</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;gchar *<a class="code" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils_get_lsb_codename</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;GHashTable *<a class="code" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils_get_os_info</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a>(<span class="keyword">const</span> gchar *filename);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina__utils_8h_html_aa768b6fe171695d212da4c6eaf74cf22"><div class="ttname"><a href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a></div><div class="ttdeci">gchar * remmina_utils_get_lsb_id()</div><div class="ttdoc">Print the Distributor as specified by the lsb_release command. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00336">remmina_utils.c:336</a></div></div>
-<div class="ttc" id="remmina__utils_8h_html_a483959ec642cece17e1b79506e71b00e"><div class="ttname"><a href="remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e">remmina_gen_random_uuid</a></div><div class="ttdeci">gchar * remmina_gen_random_uuid()</div><div class="ttdoc">Generate a random sting of chars to be used as part of UID for news or stats. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00505">remmina_utils.c:505</a></div></div>
+<a href="remmina__utils_8h.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="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#pragma once</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 &lt;glib.h&gt;</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"> 44</span>&#160;G_BEGIN_DECLS</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;gint <a class="code" href="remmina__utils_8h.html#a3ce53eeb3b090f86cfcdbce3e7cf71be">remmina_utils_string_find</a>(GString *haystack, gint start, gint end, <span class="keyword">const</span> gchar *needle);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;gint <a class="code" href="remmina__utils_8h.html#aa6859a61aa28f46591750c9afdef66f4">remmina_utils_string_replace</a>(GString *str, gint pos, gint len, <span class="keyword">const</span> gchar *replace);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;guint <a class="code" href="remmina__utils_8h.html#ac804e6111e538ee2fa425b8b6fd1fb66">remmina_utils_string_replace_all</a>(GString *haystack, <span class="keyword">const</span> gchar *needle, <span class="keyword">const</span> gchar *replace);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a>(<span class="keyword">const</span> gchar *s);</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;gchar *<a class="code" href="remmina__utils_8h.html#a0f10e190a6dd212fcb0cf36ce81c8324">remmina_utils_get_lang</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#abfc722d07d9936711794411bfbed0522">remmina_utils_get_kernel_name</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#a57603aa88df56e77e1a6de0f215f21aa">remmina_utils_get_kernel_release</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#a116e7cd4565386fe531d3a6d1a3d3730">remmina_utils_get_kernel_arch</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#ac00cb21c5cb5efcf7afc6eeae2147a75">remmina_utils_get_lsb_description</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#a5ee50df5d7585d229a154a712c9161ca">remmina_utils_get_lsb_release</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#a2b4dbb0da7c8ba4bd86877097b85d10c">remmina_utils_get_lsb_codename</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;GHashTable *<a class="code" href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="keyword">const</span> gchar *<a class="code" href="remmina__utils_8h.html#af1acfeca84e3efd47ab1ef8365f94f99">remmina_utils_get_os_info</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;gchar *<a class="code" href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a>(<span class="keyword">const</span> gchar *filename);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;G_END_DECLS</div><div class="ttc" id="remmina__utils_8h_html_aa768b6fe171695d212da4c6eaf74cf22"><div class="ttname"><a href="remmina__utils_8h.html#aa768b6fe171695d212da4c6eaf74cf22">remmina_utils_get_lsb_id</a></div><div class="ttdeci">gchar * remmina_utils_get_lsb_id()</div><div class="ttdoc">Print the Distributor as specified by the lsb_release command. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00336">remmina_utils.c:336</a></div></div>
<div class="ttc" id="remmina__utils_8h_html_afe83bd0997a1054045e17d3f66c8bb0d"><div class="ttname"><a href="remmina__utils_8h.html#afe83bd0997a1054045e17d3f66c8bb0d">remmina_utils_string_strip</a></div><div class="ttdeci">gchar * remmina_utils_string_strip(const gchar *s)</div><div class="ttdoc">Strip , and &quot; from a given string. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00220">remmina_utils.c:220</a></div></div>
<div class="ttc" id="remmina__utils_8h_html_a54cee350c4ecc6e77af835c4ba90df4c"><div class="ttname"><a href="remmina__utils_8h.html#a54cee350c4ecc6e77af835c4ba90df4c">remmina_utils_get_etc_release</a></div><div class="ttdeci">GHashTable * remmina_utils_get_etc_release()</div><div class="ttdoc">Print the distribution description if found. </div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00396">remmina_utils.c:396</a></div></div>
<div class="ttc" id="remmina__utils_8h_html_aff7d3597f23cae366973218cc01a2ae8"><div class="ttname"><a href="remmina__utils_8h.html#aff7d3597f23cae366973218cc01a2ae8">remmina_sha1_file</a></div><div class="ttdeci">gchar * remmina_sha1_file(const gchar *filename)</div><div class="ttdoc">Create a hexadecimal string version of the SHA-1 digest of the contents of the named file...</div><div class="ttdef"><b>Definition:</b> <a href="remmina__utils_8c_source.html#l00460">remmina_utils.c:460</a></div></div>
diff --git a/public/search/all_0.js b/public/search/all_0.js
index 46ef43d13..68eb0832b 100644
--- a/public/search/all_0.js
+++ b/public/search/all_0.js
@@ -49,7 +49,6 @@ var searchData=
['_5fremminamain',['_RemminaMain',['../struct___remmina_main.html',1,'']]],
['_5fremminamainpriv',['_RemminaMainPriv',['../struct___remmina_main_priv.html',1,'']]],
['_5fremminamonitor',['_RemminaMonitor',['../struct___remmina_monitor.html',1,'']]],
- ['_5fremminanewsdialog',['_RemminaNewsDialog',['../struct___remmina_news_dialog.html',1,'']]],
['_5fremminapasswddialog',['_RemminaPasswdDialog',['../struct___remmina_passwd_dialog.html',1,'']]],
['_5fremminaplugin',['_RemminaPlugin',['../struct___remmina_plugin.html',1,'']]],
['_5fremminapluginexecdata',['_RemminaPluginExecData',['../struct___remmina_plugin_exec_data.html',1,'']]],
diff --git a/public/search/all_10.js b/public/search/all_10.js
index 4f85de524..419f42cad 100644
--- a/public/search/all_10.js
+++ b/public/search/all_10.js
@@ -22,10 +22,6 @@ var searchData=
['pcon_5fspinner',['PCon_Spinner',['../struct_p_con___spinner.html',1,'']]],
['pcount',['pcount',['../struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680',1,'ProfilesData']]],
['pdatestr',['pdatestr',['../struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4',1,'ProfilesData']]],
- ['periodic_5fnews_5fpermitted',['periodic_news_permitted',['../struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4',1,'_RemminaPref']]],
- ['periodic_5frmnews_5fget_5fcount',['periodic_rmnews_get_count',['../struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005',1,'_RemminaPref']]],
- ['periodic_5frmnews_5flast_5fget',['periodic_rmnews_last_get',['../struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6',1,'_RemminaPref']]],
- ['periodic_5frmnews_5fuuid_5fprefix',['periodic_rmnews_uuid_prefix',['../struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06',1,'_RemminaPref']]],
['pflags',['pflags',['../structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8',1,'remmina_protocol_widget_dialog_mt_data_t']]],
['pformatdatarequest',['pFormatDataRequest',['../structremmina__plugin__rdp__event.html#ad3b01f14f235b582b54aa9a0057d5c1c',1,'remmina_plugin_rdp_event']]],
['pformatlist',['pFormatList',['../structremmina__plugin__rdp__event.html#a02c2d40efeac883dcc6294be9782e082',1,'remmina_plugin_rdp_event']]],
diff --git a/public/search/all_12.js b/public/search/all_12.js
index fe4146b71..72fa15932 100644
--- a/public/search/all_12.js
+++ b/public/search/all_12.js
@@ -493,7 +493,6 @@ var searchData=
['remmina_5fftp_5ftask_5fstatus_5fwait',['REMMINA_FTP_TASK_STATUS_WAIT',['../remmina__ftp__client_8h.html#abed82baf7f470b522273a3e37c24c600a97234f26b3c350325e2fef2a53871dad',1,'remmina_ftp_client.h']]],
['remmina_5fftp_5ftask_5ftype_5fdownload',['REMMINA_FTP_TASK_TYPE_DOWNLOAD',['../remmina__ftp__client_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da59857d62a8f1ff623da4d6895d81142d',1,'remmina_ftp_client.h']]],
['remmina_5fftp_5ftask_5ftype_5fupload',['REMMINA_FTP_TASK_TYPE_UPLOAD',['../remmina__ftp__client_8h.html#a0411cd49bb5b71852cecd93bcbf0ca2da3d497be5727d1de77a18ad8b7d24eb24',1,'remmina_ftp_client.h']]],
- ['remmina_5fgen_5frandom_5fuuid',['remmina_gen_random_uuid',['../remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid():&#160;remmina_utils.c'],['../remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid():&#160;remmina_utils.c']]],
['remmina_5fget_5frdp_5fkbd_5fremap',['remmina_get_rdp_kbd_remap',['../rdp__plugin_8c.html#ae0449ecd9477c0361ae0d3ca928d8017',1,'rdp_plugin.c']]],
['remmina_5fgtk_5fcheck_5fversion',['remmina_gtk_check_version',['../remmina__public_8c.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro):&#160;remmina_public.c'],['../remmina__public_8h.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro):&#160;remmina_public.c']]],
['remmina_5fgtksocket_5favailable',['remmina_gtksocket_available',['../remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available():&#160;remmina_plugin_manager.c'],['../remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available():&#160;remmina_plugin_manager.c']]],
@@ -574,7 +573,6 @@ var searchData=
['remmina_5fmain_5fon_5faction_5fapplication_5fdark_5ftheme',['remmina_main_on_action_application_dark_theme',['../remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fdefault',['remmina_main_on_action_application_default',['../remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fmpchange',['remmina_main_on_action_application_mpchange',['../remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
- ['remmina_5fmain_5fon_5faction_5fapplication_5fnews',['remmina_main_on_action_application_news',['../remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fplugins',['remmina_main_on_action_application_plugins',['../remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fpreferences',['remmina_main_on_action_application_preferences',['../remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fquit',['remmina_main_on_action_application_quit',['../remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
@@ -1422,9 +1420,9 @@ var searchData=
['remmina_5fssh_5ftunnel_5ffree',['remmina_ssh_tunnel_free',['../remmina__ssh_8h.html#a223f8dd7a678bcec2ece40a2d8f7ea06',1,'remmina_ssh.h']]],
['remmina_5fssh_5ftunnel_5fnew_5ffrom_5ffile',['remmina_ssh_tunnel_new_from_file',['../remmina__ssh_8h.html#abf04fd329ab77bbd4f6aa1cb1eaa349d',1,'remmina_ssh.h']]],
['remmina_5fssh_5ftunnel_5fopen',['REMMINA_SSH_TUNNEL_OPEN',['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798a78cac65c66c1f72592488c7c5728ea14',1,'REMMINA_SSH_TUNNEL_OPEN():&#160;remmina_ssh.h'],['../remmina__ssh_8h.html#a52b3f47eac79f2781ba81d61505f4f53',1,'remmina_ssh_tunnel_open(RemminaSSHTunnel *tunnel, const gchar *host, gint port, gint local_port):&#160;remmina_ssh.h']]],
- ['remmina_5fssh_5ftunnel_5freverse',['remmina_ssh_tunnel_reverse',['../remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2',1,'remmina_ssh_tunnel_reverse(RemminaSSHTunnel *tunnel, gint port, gint local_port):&#160;remmina_ssh.h'],['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459',1,'REMMINA_SSH_TUNNEL_REVERSE():&#160;remmina_ssh.h']]],
+ ['remmina_5fssh_5ftunnel_5freverse',['REMMINA_SSH_TUNNEL_REVERSE',['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798ae14c0d50235951946ca18866a1329459',1,'REMMINA_SSH_TUNNEL_REVERSE():&#160;remmina_ssh.h'],['../remmina__ssh_8h.html#ae47c8270267b02b9c0ff5b36074101c2',1,'remmina_ssh_tunnel_reverse(RemminaSSHTunnel *tunnel, gint port, gint local_port):&#160;remmina_ssh.h']]],
['remmina_5fssh_5ftunnel_5fterminated',['remmina_ssh_tunnel_terminated',['../remmina__ssh_8h.html#aeb20d31243a4d30e469a34fe01684e38',1,'remmina_ssh.h']]],
- ['remmina_5fssh_5ftunnel_5fxport',['remmina_ssh_tunnel_xport',['../remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4',1,'remmina_ssh_tunnel_xport(RemminaSSHTunnel *tunnel, gboolean bindlocalhost):&#160;remmina_ssh.h'],['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326',1,'REMMINA_SSH_TUNNEL_XPORT():&#160;remmina_ssh.h']]],
+ ['remmina_5fssh_5ftunnel_5fxport',['REMMINA_SSH_TUNNEL_XPORT',['../remmina__ssh_8h.html#a77867ab4129f63159b37bca3b652a798afbca41cd7b252c2594e1d53cd081b326',1,'REMMINA_SSH_TUNNEL_XPORT():&#160;remmina_ssh.h'],['../remmina__ssh_8h.html#aba49db2ced40e21e8adfad69dcfda2c4',1,'remmina_ssh_tunnel_xport(RemminaSSHTunnel *tunnel, gboolean bindlocalhost):&#160;remmina_ssh.h']]],
['remmina_5fssh_5funconvert',['remmina_ssh_unconvert',['../remmina__ssh_8h.html#aeccf94afb57bcad37b4241d45fcb3fea',1,'remmina_ssh.h']]],
['remmina_5fssh_5fx11_5fconnect_5fdisplay',['remmina_ssh_x11_connect_display',['../remmina__ssh_8c.html#a91225eab16154f145e4d3f30a011d13a',1,'remmina_ssh.c']]],
['remmina_5fssh_5fx11_5fget_5fproto',['remmina_ssh_x11_get_proto',['../remmina__ssh_8c.html#a672175c0933ab32fd1f84817c410c15b',1,'remmina_ssh.c']]],
@@ -1596,14 +1594,13 @@ var searchData=
['remminalanguagewrapperplugin',['RemminaLanguageWrapperPlugin',['../plugin_8h.html#a4cc4789bb1ba76d339b61b364399c304',1,'plugin.h']]],
['remminalogwindow',['RemminaLogWindow',['../remmina__log_8c.html#ad5a920aad512279bb932bcb26a2c3c19',1,'remmina_log.c']]],
['remminalogwindowclass',['RemminaLogWindowClass',['../remmina__log_8c.html#a5682db89dd84e1c413326e17a4f79dbe',1,'remmina_log.c']]],
- ['remminamain',['remminamain',['../remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89',1,'remminamain():&#160;remmina_main.c'],['../remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1',1,'RemminaMain():&#160;remmina_main.h']]],
+ ['remminamain',['RemminaMain',['../remmina__main_8h.html#ad17d9a48f2b3f84e17baa91104bc6cb1',1,'RemminaMain():&#160;remmina_main.h'],['../remmina__main_8c.html#ab7c680e1f6ffeef21cb928a083d36d89',1,'remminamain():&#160;remmina_main.c']]],
['remminamainpriv',['RemminaMainPriv',['../remmina__main_8h.html#a49e7c1b5d4dcfd155886e39d78b3d052',1,'remmina_main.h']]],
['remminamessagepanelcallback',['RemminaMessagePanelCallback',['../remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a',1,'remmina_message_panel.h']]],
['remminamessagepanelflags',['RemminaMessagePanelFlags',['../types_8h.html#a341a0a8b6509633809d99348cc3ba486',1,'types.h']]],
['remminamessagepanelprivate',['RemminaMessagePanelPrivate',['../struct_remmina_message_panel_private.html',1,'']]],
['remminamonitor',['RemminaMonitor',['../remmina__monitor_8h.html#ac92a9c6856c2672eef20bd0b2f605d7a',1,'remmina_monitor.h']]],
['remminamtexecdata',['RemminaMTExecData',['../remmina__masterthread__exec_8h.html#a6ac3d74eb524ac9fb0ff7eef0cb1450e',1,'remmina_masterthread_exec.h']]],
- ['remminanewsdialog',['RemminaNewsDialog',['../rmnews_8h.html#a408794dbcf4d1034bab0bd0e64fa4709',1,'rmnews.h']]],
['remminapasswddialog',['RemminaPasswdDialog',['../remmina__passwd_8h.html#a0ae512030f8e31cd01d669c1bab0cf19',1,'remmina_passwd.h']]],
['remminaplugin',['RemminaPlugin',['../plugin_8h.html#a55c60503140443d4fec9e84c33dfdd22',1,'plugin.h']]],
['remminapluginentryfunc',['RemminaPluginEntryFunc',['../plugin_8h.html#a59fee7dbde41c8d29059ca64622d1948',1,'plugin.h']]],
@@ -1695,7 +1692,7 @@ var searchData=
['response_5fcallback_5fdata',['response_callback_data',['../structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658',1,'remmina_masterthread_exec_data::response_callback_data()'],['../struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4',1,'RemminaMessagePanelPrivate::response_callback_data()']]],
['ret_5fmp',['ret_mp',['../structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1',1,'remmina_masterthread_exec_data']]],
['retptr',['retptr',['../structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24',1,'remmina_plugin_rdp_ui_object']]],
- ['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../struct___remmina_news_dialog.html#aa44d2c89a170a509ebb082082efac813',1,'_RemminaNewsDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
+ ['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
['reveal_5fbutton',['reveal_button',['../struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02',1,'_RemminaSshSearch']]],
['revealer',['revealer',['../struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300',1,'_RemminaSshSearch']]],
['rf_5fauto_5freconnect',['rf_auto_reconnect',['../rdp__plugin_8c.html#a9f14eee602089f6ff152e1c93c44c3e9',1,'rdp_plugin.c']]],
@@ -1750,28 +1747,6 @@ var searchData=
['rm_5fenc_5fmode_5fsodium_5fsensitive',['RM_ENC_MODE_SODIUM_SENSITIVE',['../remmina__pref_8h.html#ab48899087cc647f0f791ed0c459adc53a0378e0f09c7bc6fd7f8d95b3827ad561',1,'remmina_pref.h']]],
['rm_5fmonitor',['rm_monitor',['../remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd',1,'remmina_monitor.c']]],
['rm_5fplugin_5fservice',['rm_plugin_service',['../x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b',1,'x2go_plugin.c']]],
- ['rmnews_2ec',['rmnews.c',['../rmnews_8c.html',1,'']]],
- ['rmnews_2eh',['rmnews.h',['../rmnews_8h.html',1,'']]],
- ['rmnews_5fbutton_5fclose',['rmnews_button_close',['../struct___remmina_news_dialog.html#a24dd17da12072e324ce165a9873d59ad',1,'_RemminaNewsDialog']]],
- ['rmnews_5fclose_5fclicked',['rmnews_close_clicked',['../rmnews_8c.html#aaa3ec81813c3b38be1f75885e6005a00',1,'rmnews.c']]],
- ['rmnews_5fdefaultcl_5fbutton',['rmnews_defaultcl_button',['../struct___remmina_news_dialog.html#a5f1f924669db7285fac6087e08d6ce19',1,'_RemminaNewsDialog']]],
- ['rmnews_5fdefaultcl_5flabel',['rmnews_defaultcl_label',['../struct___remmina_news_dialog.html#a041c5c6f7776a3cdfd1fbcc700dfc749',1,'_RemminaNewsDialog']]],
- ['rmnews_5fdefaultcl_5fon_5fclick',['rmnews_defaultcl_on_click',['../rmnews_8c.html#a7825b2c9facea97439f5780d83e86798',1,'rmnews.c']]],
- ['rmnews_5fdialog_5fdeleted',['rmnews_dialog_deleted',['../rmnews_8c.html#adf38ed099d3ac477aea7e3bbd6d95bd4',1,'rmnews.c']]],
- ['rmnews_5fget_5ffile_5fcontents',['rmnews_get_file_contents',['../rmnews_8c.html#a11d7277ba911522ac40656774cbe41b9',1,'rmnews.c']]],
- ['rmnews_5fget_5fnews',['rmnews_get_news',['../rmnews_8c.html#a26cb497eeb30a956dcdc5790b393a301',1,'rmnews.c']]],
- ['rmnews_5fget_5fuid',['rmnews_get_uid',['../rmnews_8c.html#a59416d6e8999802e8b145b0338331081',1,'rmnews.c']]],
- ['rmnews_5fget_5furl',['rmnews_get_url',['../rmnews_8c.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url):&#160;rmnews.c'],['../rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url):&#160;rmnews.c']]],
- ['rmnews_5fget_5furl_5fcb',['rmnews_get_url_cb',['../rmnews_8c.html#a9a0c1177e67a08c991e5344196ebac01',1,'rmnews_get_url_cb(GObject *source, GAsyncResult *result, gpointer user_data):&#160;rmnews.c'],['../rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38',1,'rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data):&#160;rmnews.c']]],
- ['rmnews_5flabel',['rmnews_label',['../struct___remmina_news_dialog.html#ae4b71b4e789e65063db67f51ce4feb26',1,'_RemminaNewsDialog']]],
- ['rmnews_5fnews_5fdialog',['rmnews_news_dialog',['../rmnews_8c.html#ae1bb737d0381441eebbf3652b3ef416d',1,'rmnews.c']]],
- ['rmnews_5fnews_5fswitch',['rmnews_news_switch',['../struct___remmina_news_dialog.html#a14ee9c2823a4519ed84705fd0fe49ec8',1,'_RemminaNewsDialog']]],
- ['rmnews_5fnews_5fswitch_5fstate_5fset_5fcb',['rmnews_news_switch_state_set_cb',['../rmnews_8c.html#a0b8a063b164dbf0798982daa9399a793',1,'rmnews.c']]],
- ['rmnews_5fon_5fstream_5fsplice',['rmnews_on_stream_splice',['../rmnews_8c.html#a78c63694cb6197f185242acac0ea1575',1,'rmnews.c']]],
- ['rmnews_5fperiodic_5fcheck',['rmnews_periodic_check',['../rmnews_8c.html#a88b2d9ce9e7bc64373e2eb7f904a0814',1,'rmnews.c']]],
- ['rmnews_5fschedule',['rmnews_schedule',['../rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule():&#160;rmnews.c'],['../rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule():&#160;rmnews.c']]],
- ['rmnews_5fshow_5fnews',['rmnews_show_news',['../rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe',1,'rmnews_show_news(GtkWindow *parent):&#160;rmnews.c'],['../rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af',1,'rmnews_show_news():&#160;rmnews.h']]],
- ['rmnews_5ftext_5fview',['rmnews_text_view',['../struct___remmina_news_dialog.html#a94584de47018f068c242e5f527e3b84f',1,'_RemminaNewsDialog']]],
['rmplugin_5fx2go',['rmplugin_x2go',['../x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5fask_5fsession',['rmplugin_x2go_ask_session',['../x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5fbasic_5fsettings',['rmplugin_x2go_basic_settings',['../x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9',1,'x2go_plugin.c']]],
diff --git a/public/search/all_13.js b/public/search/all_13.js
index 57210fce3..b40f1c60e 100644
--- a/public/search/all_13.js
+++ b/public/search/all_13.js
@@ -49,7 +49,7 @@ var searchData=
['server_5fhtml_5fformat_5fid',['server_html_format_id',['../structrf__clipboard.html#a19d94ab0c58925408c8c7663dfd180ee',1,'rf_clipboard']]],
['server_5fsock',['server_sock',['../struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69',1,'_RemminaSSHTunnel']]],
['server_5fstatus',['server_status',['../struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4',1,'_RemminaMonitor']]],
- ['session',['session',['../struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3',1,'_RemminaSSH::session()'],['../struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633',1,'_RemminaPluginSpiceData::session()'],['../rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336',1,'session():&#160;rmnews.c']]],
+ ['session',['session',['../struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3',1,'_RemminaSSH::session()'],['../struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633',1,'_RemminaPluginSpiceData::session()']]],
['session_5fagent_5fpid',['SESSION_AGENT_PID',['../x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03',1,'x2go_plugin.c']]],
['session_5fchooser_5fresponse_5fchoose',['SESSION_CHOOSER_RESPONSE_CHOOSE',['../x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc',1,'x2go_plugin.c']]],
['session_5fchooser_5fresponse_5fnew',['SESSION_CHOOSER_RESPONSE_NEW',['../x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f',1,'x2go_plugin.c']]],
@@ -171,7 +171,7 @@ var searchData=
['string_5flist',['string_list',['../remmina__string__list_8c.html#a6f8601a848bb964c1c9caf69d00128b8',1,'remmina_string_list.c']]],
['strpasswordlabel',['strpasswordlabel',['../structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544',1,'remmina_protocol_widget_dialog_mt_data_t']]],
['supported_5fextentions',['supported_extentions',['../struct___remmina_language_wrapper_plugin.html#aea49b9e057254020e13f615331ef239b',1,'_RemminaLanguageWrapperPlugin']]],
- ['supported_5fmime_5ftypes',['supported_mime_types',['../remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types():&#160;remmina_main.c'],['../rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types():&#160;rmnews.c']]],
+ ['supported_5fmime_5ftypes',['supported_mime_types',['../remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'remmina_main.c']]],
['surface',['surface',['../structrf__bitmap.html#a52c9e53fa5dd0b9ab9be3622196ca80b',1,'rf_bitmap::surface()'],['../structrf__context.html#a3aead7f4d2c4580fcbd25e15679e19c6',1,'rf_context::surface()']]],
['sw',['sw',['../struct___remmina_plugin_exec_data.html#a59117466c585cabdc32c363083867bbb',1,'_RemminaPluginExecData']]],
['sw_5fgdi',['sw_gdi',['../structrf__context.html#a91f20005b39ad9e1073cf25bf6d7c2f2',1,'rf_context']]],
@@ -181,7 +181,6 @@ var searchData=
['switch_5foptions_5fconfirm_5fclose',['switch_options_confirm_close',['../struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa',1,'_RemminaPrefDialog']]],
['switch_5foptions_5fdeny_5fscreenshot_5fclipboard',['switch_options_deny_screenshot_clipboard',['../struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d',1,'_RemminaPrefDialog']]],
['switch_5foptions_5fremember_5flast_5fview_5fmode',['switch_options_remember_last_view_mode',['../struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b',1,'_RemminaPrefDialog']]],
- ['switch_5fpermit_5fnews',['switch_permit_news',['../struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5faudit',['switch_security_audit',['../struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5flock_5fconnect',['switch_security_lock_connect',['../struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5flock_5fedit',['switch_security_lock_edit',['../struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018',1,'_RemminaPrefDialog']]],
diff --git a/public/search/all_14.js b/public/search/all_14.js
index 74cce3524..f2f1b068f 100644
--- a/public/search/all_14.js
+++ b/public/search/all_14.js
@@ -43,7 +43,7 @@ var searchData=
['toolbar_5fplacement_5ftop',['TOOLBAR_PLACEMENT_TOP',['../remmina__pref_8h.html#a4caf8d8f829279fba122163d961608a4a069738542d6980f9594299ab57221a7f',1,'remmina_pref.h']]],
['toolbarplace_5fsignal',['TOOLBARPLACE_SIGNAL',['../rcw_8c.html#adf764cbdea00d65edcd07bb9953ad2b7aa9941863b5633ddecb019f793f2f7668',1,'rcw.c']]],
['tooltip',['tooltip',['../struct___remmina_f_t_p_task.html#ac2b00cace6fd885736792664843be667',1,'_RemminaFTPTask']]],
- ['top',['Top',['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()'],['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()']]],
+ ['top',['top',['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()'],['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()']]],
['transfer_5fclip_5fcond',['transfer_clip_cond',['../structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7',1,'rf_clipboard']]],
['transfer_5fclip_5fmutex',['transfer_clip_mutex',['../structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205',1,'rf_clipboard']]],
['translated_5fkeycode',['translated_keycode',['../structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1',1,'remmina_plugin_rdp_keymap_entry']]],
diff --git a/public/search/all_2.js b/public/search/all_2.js
index 395afb1b0..4225cf12d 100644
--- a/public/search/all_2.js
+++ b/public/search/all_2.js
@@ -21,7 +21,7 @@ var searchData=
['buffer_5fmutex',['buffer_mutex',['../struct___remmina_plugin_vnc_data.html#a824b3ab6d51d0ba65abdbd0e788edb89',1,'_RemminaPluginVncData']]],
['build_5fkwallet_5fkey',['build_kwallet_key',['../kwallet__plugin__main_8c.html#a864de43408740eb3b6ef58c820773e2a',1,'kwallet_plugin_main.c']]],
['buildconfig_5fstrstr',['buildconfig_strstr',['../rdp__plugin_8c.html#a7031208f6cbf262a2e69fe971f248591',1,'rdp_plugin.c']]],
- ['builder',['builder',['../struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1',1,'_RemminaMain::builder()'],['../struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285',1,'_RemminaPasswdDialog::builder()'],['../struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876',1,'_RemminaPrefDialog::builder()'],['../struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5',1,'_RemminaSshSearch::builder()'],['../struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd',1,'_RemminaStringList::builder()'],['../struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b',1,'_RemminaUnlockDialog::builder()'],['../struct___remmina_news_dialog.html#a04d61af97919ea321ca384711edd2015',1,'_RemminaNewsDialog::builder()']]],
+ ['builder',['builder',['../struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1',1,'_RemminaMain::builder()'],['../struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285',1,'_RemminaPasswdDialog::builder()'],['../struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876',1,'_RemminaPrefDialog::builder()'],['../struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5',1,'_RemminaSshSearch::builder()'],['../struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd',1,'_RemminaStringList::builder()'],['../struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b',1,'_RemminaUnlockDialog::builder()']]],
['bus',['bus',['../struct___remmina_tp_channel_handler.html#ad42b671632d6950a4da68fb84005efe3',1,'_RemminaTpChannelHandler']]],
['button_5fadd',['button_add',['../struct___remmina_string_list.html#a60620e4231fe4c9a75c2468247488be4',1,'_RemminaStringList']]],
['button_5fcancel',['button_cancel',['../struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e',1,'PCon_Spinner::button_cancel()'],['../struct___remmina_passwd_dialog.html#abefb718627c32067ff63962a8ac747cc',1,'_RemminaPasswdDialog::button_cancel()']]],
diff --git a/public/search/all_4.js b/public/search/all_4.js
index b2bbc4f52..eff3fa195 100644
--- a/public/search/all_4.js
+++ b/public/search/all_4.js
@@ -42,7 +42,7 @@ var searchData=
['device_5fscale_5ffactor_5fcombo',['device_scale_factor_combo',['../struct___remmina_plugin_rdpset_grid.html#ad64fd1c5a1230a98afaff86ece884ff3',1,'_RemminaPluginRdpsetGrid']]],
['device_5fscale_5ffactor_5fstore',['device_scale_factor_store',['../struct___remmina_plugin_rdpset_grid.html#a2e5ba950872f1a5db42a7b077cb02860',1,'_RemminaPluginRdpsetGrid']]],
['devicescalefactor',['deviceScaleFactor',['../structremmina__plugin__rdp__event.html#a30115ccc01062368d9b1189a0f378f57',1,'remmina_plugin_rdp_event']]],
- ['dialog',['dialog',['../struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646',1,'PCon_Spinner::dialog()'],['../struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872',1,'_RemminaFileEditor::dialog()'],['../structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568',1,'mpchanger_params::dialog()'],['../struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0',1,'_RemminaPasswdDialog::dialog()'],['../struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae',1,'_RemminaPrefDialog::dialog()'],['../struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558',1,'_RemminaStringList::dialog()'],['../struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e',1,'_RemminaUnlockDialog::dialog()'],['../struct___remmina_news_dialog.html#a652393d5775f6abb7a3b97e1d250797f',1,'_RemminaNewsDialog::dialog()']]],
+ ['dialog',['dialog',['../struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646',1,'PCon_Spinner::dialog()'],['../struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872',1,'_RemminaFileEditor::dialog()'],['../structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568',1,'mpchanger_params::dialog()'],['../struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0',1,'_RemminaPasswdDialog::dialog()'],['../struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae',1,'_RemminaPrefDialog::dialog()'],['../struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558',1,'_RemminaStringList::dialog()'],['../struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e',1,'_RemminaUnlockDialog::dialog()']]],
['dialog_5fdata',['dialog_data',['../struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64',1,'_X2GoCustomUserData']]],
['dialog_5ffactory_5fdata',['dialog_factory_data',['../struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7',1,'_DialogData']]],
['dialog_5ffactory_5ffunc',['dialog_factory_func',['../struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f',1,'_DialogData']]],
@@ -51,7 +51,6 @@ var searchData=
['disable_5ftray_5ficon',['disable_tray_icon',['../struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c',1,'_RemminaPref']]],
['disable_5fwarning_5fredirections',['disable_warning_redirections',['../struct___py_g_object___functions.html#aa42f0c029ddfdb49b618fbe5adef056d',1,'_PyGObject_Functions']]],
['disablegstvideooverlay_5ftooltip',['disablegstvideooverlay_tooltip',['../spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59',1,'spice_plugin.c']]],
- ['disablenews',['disablenews',['../remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a',1,'disablenews():&#160;remmina.c'],['../rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b',1,'disablenews():&#160;remmina.c']]],
['disabletoolbar',['disabletoolbar',['../remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar():&#160;remmina.c'],['../remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar():&#160;remmina.c']]],
['disabletrayicon',['disabletrayicon',['../remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon():&#160;remmina.c'],['../remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon():&#160;remmina.c']]],
['disconnect',['disconnect',['../struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213',1,'_RemminaProtocolWidgetClass']]],
diff --git a/public/search/all_5.js b/public/search/all_5.js
index c5ca1dfa7..3ab301146 100644
--- a/public/search/all_5.js
+++ b/public/search/all_5.js
@@ -52,7 +52,6 @@ var searchData=
['event_5fqueue',['event_queue',['../structrf__context.html#a5d119b1f108fe84c74e6484d48c2a565',1,'rf_context']]],
['event_5ftype',['event_type',['../struct___remmina_plugin_vnc_event.html#a0ffbaa26908fd25e653dfaf5ad8ccff0',1,'_RemminaPluginVncEvent']]],
['events',['events',['../remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61',1,'remmina_ssh.c']]],
- ['eweekdays',['eweekdays',['../rmnews_8c.html#af4777302c760225b833206545e9f437d',1,'rmnews.c']]],
['exception_5fhandler',['exception_handler',['../struct___py_g_closure.html#ad62131315a6dd08a8454c683709756b5',1,'_PyGClosure']]],
['exec',['exec',['../struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7',1,'_RemminaSSHShell']]],
['exec_5ffunc',['exec_func',['../struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74',1,'_RemminaToolPlugin']]],
diff --git a/public/search/all_f.js b/public/search/all_f.js
index 4683b1d6e..09c0490fd 100644
--- a/public/search/all_f.js
+++ b/public/search/all_f.js
@@ -24,6 +24,5 @@ var searchData=
['orig_5fhandler',['orig_handler',['../struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361',1,'_RemminaPluginX2GoData']]],
['orig_5fkeycode',['orig_keycode',['../structremmina__plugin__rdp__keymap__entry.html#a20d8c7c462c3cb173e3baedbc19a8a88',1,'remmina_plugin_rdp_keymap_entry']]],
['orphaned',['orphaned',['../structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4',1,'rf_context']]],
- ['output_5ffile_5fpath',['output_file_path',['../rmnews_8c.html#a565782499953048b5e51934123195e29',1,'rmnews.c']]],
['override_5fview_5ffile_5fmode_5fto_5flist',['override_view_file_mode_to_list',['../struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76',1,'_RemminaMainPriv']]]
];
diff --git a/public/search/classes_0.js b/public/search/classes_0.js
index a7abe9fb1..643f6ee1b 100644
--- a/public/search/classes_0.js
+++ b/public/search/classes_0.js
@@ -37,7 +37,6 @@ var searchData=
['_5fremminamain',['_RemminaMain',['../struct___remmina_main.html',1,'']]],
['_5fremminamainpriv',['_RemminaMainPriv',['../struct___remmina_main_priv.html',1,'']]],
['_5fremminamonitor',['_RemminaMonitor',['../struct___remmina_monitor.html',1,'']]],
- ['_5fremminanewsdialog',['_RemminaNewsDialog',['../struct___remmina_news_dialog.html',1,'']]],
['_5fremminapasswddialog',['_RemminaPasswdDialog',['../struct___remmina_passwd_dialog.html',1,'']]],
['_5fremminaplugin',['_RemminaPlugin',['../struct___remmina_plugin.html',1,'']]],
['_5fremminapluginexecdata',['_RemminaPluginExecData',['../struct___remmina_plugin_exec_data.html',1,'']]],
diff --git a/public/search/files_f.js b/public/search/files_f.js
index 16ec60287..5973c19f7 100644
--- a/public/search/files_f.js
+++ b/public/search/files_f.js
@@ -121,7 +121,5 @@ var searchData=
['remmina_5futils_2ec',['remmina_utils.c',['../remmina__utils_8c.html',1,'']]],
['remmina_5futils_2eh',['remmina_utils.h',['../remmina__utils_8h.html',1,'']]],
['remmina_5fwidget_5fpool_2ec',['remmina_widget_pool.c',['../remmina__widget__pool_8c.html',1,'']]],
- ['remmina_5fwidget_5fpool_2eh',['remmina_widget_pool.h',['../remmina__widget__pool_8h.html',1,'']]],
- ['rmnews_2ec',['rmnews.c',['../rmnews_8c.html',1,'']]],
- ['rmnews_2eh',['rmnews.h',['../rmnews_8h.html',1,'']]]
+ ['remmina_5fwidget_5fpool_2eh',['remmina_widget_pool.h',['../remmina__widget__pool_8h.html',1,'']]]
];
diff --git a/public/search/functions_11.js b/public/search/functions_11.js
index 3d731a9fa..b7250271b 100644
--- a/public/search/functions_11.js
+++ b/public/search/functions_11.js
@@ -332,7 +332,6 @@ var searchData=
['remmina_5fftp_5fclient_5fupdate_5ftask',['remmina_ftp_client_update_task',['../remmina__ftp__client_8c.html#ad96358f40ab056c91f796ddda886a1dd',1,'remmina_ftp_client_update_task(RemminaFTPClient *client, RemminaFTPTask *task):&#160;remmina_ftp_client.c'],['../remmina__ftp__client_8h.html#ad96358f40ab056c91f796ddda886a1dd',1,'remmina_ftp_client_update_task(RemminaFTPClient *client, RemminaFTPTask *task):&#160;remmina_ftp_client.c']]],
['remmina_5fftp_5fclient_5fupload_5ffolder_5fon_5ftoggled',['remmina_ftp_client_upload_folder_on_toggled',['../remmina__ftp__client_8c.html#a8bdee1727836cb01a794c4164da50406',1,'remmina_ftp_client.c']]],
['remmina_5fftp_5ftask_5ffree',['remmina_ftp_task_free',['../remmina__ftp__client_8c.html#a659de1105971e3fda3d44d089277d6a7',1,'remmina_ftp_task_free(RemminaFTPTask *task):&#160;remmina_ftp_client.c'],['../remmina__ftp__client_8h.html#a659de1105971e3fda3d44d089277d6a7',1,'remmina_ftp_task_free(RemminaFTPTask *task):&#160;remmina_ftp_client.c']]],
- ['remmina_5fgen_5frandom_5fuuid',['remmina_gen_random_uuid',['../remmina__utils_8c.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid():&#160;remmina_utils.c'],['../remmina__utils_8h.html#a483959ec642cece17e1b79506e71b00e',1,'remmina_gen_random_uuid():&#160;remmina_utils.c']]],
['remmina_5fget_5frdp_5fkbd_5fremap',['remmina_get_rdp_kbd_remap',['../rdp__plugin_8c.html#ae0449ecd9477c0361ae0d3ca928d8017',1,'rdp_plugin.c']]],
['remmina_5fgtk_5fcheck_5fversion',['remmina_gtk_check_version',['../remmina__public_8c.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro):&#160;remmina_public.c'],['../remmina__public_8h.html#ad7c29f17323086e08ac56e1636fd41c3',1,'remmina_gtk_check_version(guint major, guint minor, guint micro):&#160;remmina_public.c']]],
['remmina_5fgtksocket_5favailable',['remmina_gtksocket_available',['../remmina__plugin__manager_8c.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available():&#160;remmina_plugin_manager.c'],['../remmina__plugin__manager_8h.html#a1ef27b953decb0c707ec9a18da47a38f',1,'remmina_gtksocket_available():&#160;remmina_plugin_manager.c']]],
@@ -402,7 +401,6 @@ var searchData=
['remmina_5fmain_5fon_5faction_5fapplication_5fdark_5ftheme',['remmina_main_on_action_application_dark_theme',['../remmina__main_8c.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a91f22c2834ac7f38d201d8d678f8c57b',1,'remmina_main_on_action_application_dark_theme(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fdefault',['remmina_main_on_action_application_default',['../remmina__main_8c.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a05dbb6ce820f3a137949b919d0efa6a1',1,'remmina_main_on_action_application_default(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fmpchange',['remmina_main_on_action_application_mpchange',['../remmina__main_8c.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#abf51d42fa2c5ce84164b5514b4634229',1,'remmina_main_on_action_application_mpchange(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
- ['remmina_5fmain_5fon_5faction_5fapplication_5fnews',['remmina_main_on_action_application_news',['../remmina__main_8c.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a0b4ec1e78b79adaa180a385ac50c20d6',1,'remmina_main_on_action_application_news(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fplugins',['remmina_main_on_action_application_plugins',['../remmina__main_8c.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#adf59ad5b0a0ef68e58bbea3701929efc',1,'remmina_main_on_action_application_plugins(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fpreferences',['remmina_main_on_action_application_preferences',['../remmina__main_8c.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a6ed9f6a588a2d9e3a6cf6884c8d07f92',1,'remmina_main_on_action_application_preferences(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
['remmina_5fmain_5fon_5faction_5fapplication_5fquit',['remmina_main_on_action_application_quit',['../remmina__main_8c.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c'],['../remmina__main_8h.html#a5445e5568a6fc04d08b620829a59334a',1,'remmina_main_on_action_application_quit(GSimpleAction *action, GVariant *param, gpointer data):&#160;remmina_main.c']]],
@@ -1181,19 +1179,6 @@ var searchData=
['rf_5fregister_5fgraphics',['rf_register_graphics',['../rdp__graphics_8c.html#a95732c40c35499f3440715b6526279b1',1,'rf_register_graphics(rdpGraphics *graphics):&#160;rdp_graphics.c'],['../rdp__graphics_8h.html#a95732c40c35499f3440715b6526279b1',1,'rf_register_graphics(rdpGraphics *graphics):&#160;rdp_graphics.c']]],
['rf_5funinit',['rf_uninit',['../rdp__plugin_8h.html#ab113687b2d454d2ef5865de40a9cabbb',1,'rdp_plugin.h']]],
['rfi_5funinit',['rfi_uninit',['../rdp__plugin_8c.html#af22c947a2ae21ce29170be003585e06b',1,'rdp_plugin.c']]],
- ['rmnews_5fclose_5fclicked',['rmnews_close_clicked',['../rmnews_8c.html#aaa3ec81813c3b38be1f75885e6005a00',1,'rmnews.c']]],
- ['rmnews_5fdefaultcl_5fon_5fclick',['rmnews_defaultcl_on_click',['../rmnews_8c.html#a7825b2c9facea97439f5780d83e86798',1,'rmnews.c']]],
- ['rmnews_5fdialog_5fdeleted',['rmnews_dialog_deleted',['../rmnews_8c.html#adf38ed099d3ac477aea7e3bbd6d95bd4',1,'rmnews.c']]],
- ['rmnews_5fget_5ffile_5fcontents',['rmnews_get_file_contents',['../rmnews_8c.html#a11d7277ba911522ac40656774cbe41b9',1,'rmnews.c']]],
- ['rmnews_5fget_5fnews',['rmnews_get_news',['../rmnews_8c.html#a26cb497eeb30a956dcdc5790b393a301',1,'rmnews.c']]],
- ['rmnews_5fget_5fuid',['rmnews_get_uid',['../rmnews_8c.html#a59416d6e8999802e8b145b0338331081',1,'rmnews.c']]],
- ['rmnews_5fget_5furl',['rmnews_get_url',['../rmnews_8c.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url):&#160;rmnews.c'],['../rmnews_8h.html#a341ebc424e040f8f8a2e5e46b1920c7e',1,'rmnews_get_url(const char *url):&#160;rmnews.c']]],
- ['rmnews_5fget_5furl_5fcb',['rmnews_get_url_cb',['../rmnews_8c.html#a9a0c1177e67a08c991e5344196ebac01',1,'rmnews_get_url_cb(GObject *source, GAsyncResult *result, gpointer user_data):&#160;rmnews.c'],['../rmnews_8c.html#aa360ccd2808c76aab98c1fc4bc336c38',1,'rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data):&#160;rmnews.c']]],
- ['rmnews_5fnews_5fswitch_5fstate_5fset_5fcb',['rmnews_news_switch_state_set_cb',['../rmnews_8c.html#a0b8a063b164dbf0798982daa9399a793',1,'rmnews.c']]],
- ['rmnews_5fon_5fstream_5fsplice',['rmnews_on_stream_splice',['../rmnews_8c.html#a78c63694cb6197f185242acac0ea1575',1,'rmnews.c']]],
- ['rmnews_5fperiodic_5fcheck',['rmnews_periodic_check',['../rmnews_8c.html#a88b2d9ce9e7bc64373e2eb7f904a0814',1,'rmnews.c']]],
- ['rmnews_5fschedule',['rmnews_schedule',['../rmnews_8c.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule():&#160;rmnews.c'],['../rmnews_8h.html#a8433da15acb3138804b4816189e8fc3a',1,'rmnews_schedule():&#160;rmnews.c']]],
- ['rmnews_5fshow_5fnews',['rmnews_show_news',['../rmnews_8c.html#af58ee02676e8c920a6e9b4676bb86abe',1,'rmnews_show_news(GtkWindow *parent):&#160;rmnews.c'],['../rmnews_8h.html#a356f4b0242f21bcbefb2ace3a15873af',1,'rmnews_show_news():&#160;rmnews.h']]],
['rmplugin_5fx2go_5fask_5fsession',['rmplugin_x2go_ask_session',['../x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5fchoose_5fsession_5fdialog_5ffactory',['rmplugin_x2go_choose_session_dialog_factory',['../x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5fcleanup',['rmplugin_x2go_cleanup',['../x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a',1,'x2go_plugin.c']]],
diff --git a/public/search/typedefs_6.js b/public/search/typedefs_6.js
index 2791ead67..f4713e1b3 100644
--- a/public/search/typedefs_6.js
+++ b/public/search/typedefs_6.js
@@ -39,7 +39,6 @@ var searchData=
['remminamessagepanelcallback',['RemminaMessagePanelCallback',['../remmina__message__panel_8h.html#ae2923c94c1caf1ac4a7eb48361d2670a',1,'remmina_message_panel.h']]],
['remminamonitor',['RemminaMonitor',['../remmina__monitor_8h.html#ac92a9c6856c2672eef20bd0b2f605d7a',1,'remmina_monitor.h']]],
['remminamtexecdata',['RemminaMTExecData',['../remmina__masterthread__exec_8h.html#a6ac3d74eb524ac9fb0ff7eef0cb1450e',1,'remmina_masterthread_exec.h']]],
- ['remminanewsdialog',['RemminaNewsDialog',['../rmnews_8h.html#a408794dbcf4d1034bab0bd0e64fa4709',1,'rmnews.h']]],
['remminapasswddialog',['RemminaPasswdDialog',['../remmina__passwd_8h.html#a0ae512030f8e31cd01d669c1bab0cf19',1,'remmina_passwd.h']]],
['remminaplugin',['RemminaPlugin',['../plugin_8h.html#a55c60503140443d4fec9e84c33dfdd22',1,'plugin.h']]],
['remminapluginentryfunc',['RemminaPluginEntryFunc',['../plugin_8h.html#a59fee7dbde41c8d29059ca64622d1948',1,'plugin.h']]],
diff --git a/public/search/variables_11.js b/public/search/variables_11.js
index ea21aaf5a..b73dfbea3 100644
--- a/public/search/variables_11.js
+++ b/public/search/variables_11.js
@@ -116,7 +116,7 @@ var searchData=
['response_5fcallback_5fdata',['response_callback_data',['../structremmina__masterthread__exec__data.html#aed4afd0ce7ecf117534076f500aa0658',1,'remmina_masterthread_exec_data::response_callback_data()'],['../struct_remmina_message_panel_private.html#a6595dbe739d97d82e36c6e0878bcf1d4',1,'RemminaMessagePanelPrivate::response_callback_data()']]],
['ret_5fmp',['ret_mp',['../structremmina__masterthread__exec__data.html#ab4a1d527225cf5a768814b02acb0e7a1',1,'remmina_masterthread_exec_data']]],
['retptr',['retptr',['../structremmina__plugin__rdp__ui__object.html#a6cdd472797d227d7ce79a312c0fa2a24',1,'remmina_plugin_rdp_ui_object']]],
- ['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../struct___remmina_news_dialog.html#aa44d2c89a170a509ebb082082efac813',1,'_RemminaNewsDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
+ ['retval',['retval',['../structremmina__masterthread__exec__data.html#a9d393b6e73a6971ac91cad231f796e15',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#ae203540a298d2f92459e740789e8799c',1,'remmina_masterthread_exec_data::retval()'],['../structremmina__masterthread__exec__data.html#aea0366c99f68b738f396678ea6b77e07',1,'remmina_masterthread_exec_data::retval()'],['../struct___remmina_unlock_dialog.html#a100f356b1eb9f6574b349e7573408235',1,'_RemminaUnlockDialog::retval()'],['../structremmina__plugin__rdp__ui__object.html#a9f6aba25030b6859fbd57bee840feeee',1,'remmina_plugin_rdp_ui_object::retval()']]],
['reveal_5fbutton',['reveal_button',['../struct___remmina_ssh_search.html#a8f9a64245acf9b02edac4fbbcfdedd02',1,'_RemminaSshSearch']]],
['revealer',['revealer',['../struct___remmina_ssh_search.html#a9b72b310751ac148d5c55b0f2a04a300',1,'_RemminaSshSearch']]],
['rfi',['rfi',['../structrf__clipboard.html#a268b5336ae92d8d2f54c5ee441325d68',1,'rf_clipboard']]],
@@ -124,13 +124,6 @@ var searchData=
['rgb_5fbuffer',['rgb_buffer',['../struct___remmina_plugin_vnc_data.html#a5412ada4c656d0053f0656bed890c030',1,'_RemminaPluginVncData']]],
['rm_5fmonitor',['rm_monitor',['../remmina__monitor_8c.html#a6eae21e170328d883ef13f8f71401ffd',1,'remmina_monitor.c']]],
['rm_5fplugin_5fservice',['rm_plugin_service',['../x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b',1,'x2go_plugin.c']]],
- ['rmnews_5fbutton_5fclose',['rmnews_button_close',['../struct___remmina_news_dialog.html#a24dd17da12072e324ce165a9873d59ad',1,'_RemminaNewsDialog']]],
- ['rmnews_5fdefaultcl_5fbutton',['rmnews_defaultcl_button',['../struct___remmina_news_dialog.html#a5f1f924669db7285fac6087e08d6ce19',1,'_RemminaNewsDialog']]],
- ['rmnews_5fdefaultcl_5flabel',['rmnews_defaultcl_label',['../struct___remmina_news_dialog.html#a041c5c6f7776a3cdfd1fbcc700dfc749',1,'_RemminaNewsDialog']]],
- ['rmnews_5flabel',['rmnews_label',['../struct___remmina_news_dialog.html#ae4b71b4e789e65063db67f51ce4feb26',1,'_RemminaNewsDialog']]],
- ['rmnews_5fnews_5fdialog',['rmnews_news_dialog',['../rmnews_8c.html#ae1bb737d0381441eebbf3652b3ef416d',1,'rmnews.c']]],
- ['rmnews_5fnews_5fswitch',['rmnews_news_switch',['../struct___remmina_news_dialog.html#a14ee9c2823a4519ed84705fd0fe49ec8',1,'_RemminaNewsDialog']]],
- ['rmnews_5ftext_5fview',['rmnews_text_view',['../struct___remmina_news_dialog.html#a94584de47018f068c242e5f527e3b84f',1,'_RemminaNewsDialog']]],
['rmplugin_5fx2go',['rmplugin_x2go',['../x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5fbasic_5fsettings',['rmplugin_x2go_basic_settings',['../x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9',1,'x2go_plugin.c']]],
['rmplugin_5fx2go_5ffeatures',['rmplugin_x2go_features',['../x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f',1,'x2go_plugin.c']]],
diff --git a/public/search/variables_12.js b/public/search/variables_12.js
index e23680583..af1216252 100644
--- a/public/search/variables_12.js
+++ b/public/search/variables_12.js
@@ -38,7 +38,7 @@ var searchData=
['server_5fhtml_5fformat_5fid',['server_html_format_id',['../structrf__clipboard.html#a19d94ab0c58925408c8c7663dfd180ee',1,'rf_clipboard']]],
['server_5fsock',['server_sock',['../struct___remmina_s_s_h_tunnel.html#a7fd94fc8f610d86eb71a7a7fa1500d69',1,'_RemminaSSHTunnel']]],
['server_5fstatus',['server_status',['../struct___remmina_monitor.html#abfc4878dd55c3b590663ac530ea53be4',1,'_RemminaMonitor']]],
- ['session',['session',['../struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3',1,'_RemminaSSH::session()'],['../struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633',1,'_RemminaPluginSpiceData::session()'],['../rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336',1,'session():&#160;rmnews.c']]],
+ ['session',['session',['../struct___remmina_s_s_h.html#a46cdb47db9c0ce8c1ac267cb3d10bbb3',1,'_RemminaSSH::session()'],['../struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633',1,'_RemminaPluginSpiceData::session()']]],
['set_5fthread_5fblock_5ffuncs',['set_thread_block_funcs',['../struct___py_g_object___functions.html#aa245a4fc468c43d22f39d1c3cfed9895',1,'_PyGObject_Functions']]],
['setting',['setting',['../structremmina__masterthread__exec__data.html#abbe5b4e21ccb693a6505c958e150984b',1,'remmina_masterthread_exec_data']]],
['settings',['settings',['../struct___remmina_file.html#aa090f1969b90157a3df6067e8e13ffcd',1,'_RemminaFile::settings()'],['../structrf__context.html#a28d215e4ddb5decc543c3c6578df5e3d',1,'rf_context::settings()'],['../struct___remmina_plugin_w_w_w_data.html#a3f740cb467c00cb8f17ff2546498fa54',1,'_RemminaPluginWWWData::settings()']]],
@@ -117,7 +117,7 @@ var searchData=
['string_5flist',['string_list',['../remmina__string__list_8c.html#a6f8601a848bb964c1c9caf69d00128b8',1,'remmina_string_list.c']]],
['strpasswordlabel',['strpasswordlabel',['../structremmina__protocol__widget__dialog__mt__data__t.html#a72561ca7477a62e8c7234409205e6544',1,'remmina_protocol_widget_dialog_mt_data_t']]],
['supported_5fextentions',['supported_extentions',['../struct___remmina_language_wrapper_plugin.html#aea49b9e057254020e13f615331ef239b',1,'_RemminaLanguageWrapperPlugin']]],
- ['supported_5fmime_5ftypes',['supported_mime_types',['../remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types():&#160;remmina_main.c'],['../rmnews_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'supported_mime_types():&#160;rmnews.c']]],
+ ['supported_5fmime_5ftypes',['supported_mime_types',['../remmina__main_8c.html#a8ebbcba2c07af0938b3c29e316747d12',1,'remmina_main.c']]],
['surface',['surface',['../structrf__bitmap.html#a52c9e53fa5dd0b9ab9be3622196ca80b',1,'rf_bitmap::surface()'],['../structrf__context.html#a3aead7f4d2c4580fcbd25e15679e19c6',1,'rf_context::surface()']]],
['sw',['sw',['../struct___remmina_plugin_exec_data.html#a59117466c585cabdc32c363083867bbb',1,'_RemminaPluginExecData']]],
['sw_5fgdi',['sw_gdi',['../structrf__context.html#a91f20005b39ad9e1073cf25bf6d7c2f2',1,'rf_context']]],
@@ -127,7 +127,6 @@ var searchData=
['switch_5foptions_5fconfirm_5fclose',['switch_options_confirm_close',['../struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa',1,'_RemminaPrefDialog']]],
['switch_5foptions_5fdeny_5fscreenshot_5fclipboard',['switch_options_deny_screenshot_clipboard',['../struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d',1,'_RemminaPrefDialog']]],
['switch_5foptions_5fremember_5flast_5fview_5fmode',['switch_options_remember_last_view_mode',['../struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b',1,'_RemminaPrefDialog']]],
- ['switch_5fpermit_5fnews',['switch_permit_news',['../struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5faudit',['switch_security_audit',['../struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5flock_5fconnect',['switch_security_lock_connect',['../struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193',1,'_RemminaPrefDialog']]],
['switch_5fsecurity_5flock_5fedit',['switch_security_lock_edit',['../struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018',1,'_RemminaPrefDialog']]],
diff --git a/public/search/variables_13.js b/public/search/variables_13.js
index 58ce55ace..12551c7b0 100644
--- a/public/search/variables_13.js
+++ b/public/search/variables_13.js
@@ -25,7 +25,7 @@ var searchData=
['toolbar_5fplace',['toolbar_place',['../struct___remmina_connection_window_class.html#aeb815c87f3bddad607a61d293eef661d',1,'_RemminaConnectionWindowClass']]],
['toolbar_5fplacement',['toolbar_placement',['../struct___remmina_pref.html#a0242e9fcc63d6d24257f63fc23077133',1,'_RemminaPref']]],
['tooltip',['tooltip',['../struct___remmina_f_t_p_task.html#ac2b00cace6fd885736792664843be667',1,'_RemminaFTPTask']]],
- ['top',['Top',['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()'],['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()']]],
+ ['top',['top',['../structremmina__plugin__rdp__ui__object.html#a8303068061e16a6a1878be52b6403070',1,'remmina_plugin_rdp_ui_object::top()'],['../structremmina__plugin__rdp__event.html#a880c2311bdcc07c03842427490da7764',1,'remmina_plugin_rdp_event::Top()']]],
['transfer_5fclip_5fcond',['transfer_clip_cond',['../structrf__clipboard.html#acf5bf9da1a18e21409c4b10368f8dfd7',1,'rf_clipboard']]],
['transfer_5fclip_5fmutex',['transfer_clip_mutex',['../structrf__clipboard.html#a5c6be1637ed9e2ce72ffde2ed5400205',1,'rf_clipboard']]],
['translated_5fkeycode',['translated_keycode',['../structremmina__plugin__rdp__keymap__entry.html#aa63271d75f6dfda81584ddfb7c60b2a1',1,'remmina_plugin_rdp_keymap_entry']]],
diff --git a/public/search/variables_2.js b/public/search/variables_2.js
index 81bdbb659..d7c54a16b 100644
--- a/public/search/variables_2.js
+++ b/public/search/variables_2.js
@@ -17,7 +17,7 @@ var searchData=
['buffer',['buffer',['../struct___remmina_plugin_screenshot_data.html#a757f692624e3e110eaa5bf0c05ac2a6c',1,'_RemminaPluginScreenshotData::buffer()'],['../struct___remmina_s_s_h_tunnel.html#a155d773294b0671aac4e710e97d90047',1,'_RemminaSSHTunnel::buffer()'],['../struct_py_remmina_plugin_screenshot_data.html#aac36eb74554bd33d71ae4b6531ffa720',1,'PyRemminaPluginScreenshotData::buffer()']]],
['buffer_5flen',['buffer_len',['../struct___remmina_s_s_h_tunnel.html#a88ae4fb816713bd90d8e452b5e7ef0bb',1,'_RemminaSSHTunnel']]],
['buffer_5fmutex',['buffer_mutex',['../struct___remmina_plugin_vnc_data.html#a824b3ab6d51d0ba65abdbd0e788edb89',1,'_RemminaPluginVncData']]],
- ['builder',['builder',['../struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1',1,'_RemminaMain::builder()'],['../struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285',1,'_RemminaPasswdDialog::builder()'],['../struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876',1,'_RemminaPrefDialog::builder()'],['../struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5',1,'_RemminaSshSearch::builder()'],['../struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd',1,'_RemminaStringList::builder()'],['../struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b',1,'_RemminaUnlockDialog::builder()'],['../struct___remmina_news_dialog.html#a04d61af97919ea321ca384711edd2015',1,'_RemminaNewsDialog::builder()']]],
+ ['builder',['builder',['../struct___remmina_main.html#ab7c6aebff1b06ef97c36bfa9d360b0c1',1,'_RemminaMain::builder()'],['../struct___remmina_passwd_dialog.html#abc9b4ad9dc2e174681f304dbf8d4d285',1,'_RemminaPasswdDialog::builder()'],['../struct___remmina_pref_dialog.html#a597cc3d6e631babe57df7a472cbb2876',1,'_RemminaPrefDialog::builder()'],['../struct___remmina_ssh_search.html#a8a571c5560ea5c57936b943a990465b5',1,'_RemminaSshSearch::builder()'],['../struct___remmina_string_list.html#a2dbca3443519d434c0f453c089d20bcd',1,'_RemminaStringList::builder()'],['../struct___remmina_unlock_dialog.html#adea2159828578aefa4d3833083b9de2b',1,'_RemminaUnlockDialog::builder()']]],
['bus',['bus',['../struct___remmina_tp_channel_handler.html#ad42b671632d6950a4da68fb84005efe3',1,'_RemminaTpChannelHandler']]],
['button_5fadd',['button_add',['../struct___remmina_string_list.html#a60620e4231fe4c9a75c2468247488be4',1,'_RemminaStringList']]],
['button_5fcancel',['button_cancel',['../struct_p_con___spinner.html#ab7322b598d596a57d8424d90762c588e',1,'PCon_Spinner::button_cancel()'],['../struct___remmina_passwd_dialog.html#abefb718627c32067ff63962a8ac747cc',1,'_RemminaPasswdDialog::button_cancel()']]],
diff --git a/public/search/variables_4.js b/public/search/variables_4.js
index 8a4f873ef..9fa510619 100644
--- a/public/search/variables_4.js
+++ b/public/search/variables_4.js
@@ -36,7 +36,7 @@ var searchData=
['device_5fscale_5ffactor_5fcombo',['device_scale_factor_combo',['../struct___remmina_plugin_rdpset_grid.html#ad64fd1c5a1230a98afaff86ece884ff3',1,'_RemminaPluginRdpsetGrid']]],
['device_5fscale_5ffactor_5fstore',['device_scale_factor_store',['../struct___remmina_plugin_rdpset_grid.html#a2e5ba950872f1a5db42a7b077cb02860',1,'_RemminaPluginRdpsetGrid']]],
['devicescalefactor',['deviceScaleFactor',['../structremmina__plugin__rdp__event.html#a30115ccc01062368d9b1189a0f378f57',1,'remmina_plugin_rdp_event']]],
- ['dialog',['dialog',['../struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646',1,'PCon_Spinner::dialog()'],['../struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872',1,'_RemminaFileEditor::dialog()'],['../structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568',1,'mpchanger_params::dialog()'],['../struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0',1,'_RemminaPasswdDialog::dialog()'],['../struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae',1,'_RemminaPrefDialog::dialog()'],['../struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558',1,'_RemminaStringList::dialog()'],['../struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e',1,'_RemminaUnlockDialog::dialog()'],['../struct___remmina_news_dialog.html#a652393d5775f6abb7a3b97e1d250797f',1,'_RemminaNewsDialog::dialog()']]],
+ ['dialog',['dialog',['../struct_p_con___spinner.html#aa0004e88608c893e343a9a2b3e50f646',1,'PCon_Spinner::dialog()'],['../struct___remmina_file_editor.html#ad33dd514275a054042ab1ac258092872',1,'_RemminaFileEditor::dialog()'],['../structmpchanger__params.html#adf52357ac6f70f8bead49111deff9568',1,'mpchanger_params::dialog()'],['../struct___remmina_passwd_dialog.html#aedb461f6913233ad7efd6c0264fd9da0',1,'_RemminaPasswdDialog::dialog()'],['../struct___remmina_pref_dialog.html#a20eb324fa74f18cd063289197e72deae',1,'_RemminaPrefDialog::dialog()'],['../struct___remmina_string_list.html#a7f0b41416987d00fdbd8bdd31f7ba558',1,'_RemminaStringList::dialog()'],['../struct___remmina_unlock_dialog.html#a2612295677b0f040e55470018c26628e',1,'_RemminaUnlockDialog::dialog()']]],
['dialog_5fdata',['dialog_data',['../struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64',1,'_X2GoCustomUserData']]],
['dialog_5ffactory_5fdata',['dialog_factory_data',['../struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7',1,'_DialogData']]],
['dialog_5ffactory_5ffunc',['dialog_factory_func',['../struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f',1,'_DialogData']]],
@@ -44,7 +44,6 @@ var searchData=
['disable_5ftray_5ficon',['disable_tray_icon',['../struct___remmina_pref.html#afcd157a6f3bddb4b23b4e328cd18358c',1,'_RemminaPref']]],
['disable_5fwarning_5fredirections',['disable_warning_redirections',['../struct___py_g_object___functions.html#aa42f0c029ddfdb49b618fbe5adef056d',1,'_PyGObject_Functions']]],
['disablegstvideooverlay_5ftooltip',['disablegstvideooverlay_tooltip',['../spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59',1,'spice_plugin.c']]],
- ['disablenews',['disablenews',['../remmina_8c.html#a0e2a887037f1ac58aa26fae55187601a',1,'disablenews():&#160;remmina.c'],['../rmnews_8h.html#a7bb52efeacff2541ada1c04f279f6e0b',1,'disablenews():&#160;remmina.c']]],
['disabletoolbar',['disabletoolbar',['../remmina_8c.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar():&#160;remmina.c'],['../remmina__pref_8h.html#a86d25bcf3c47f758f813a175a18b6ff1',1,'disabletoolbar():&#160;remmina.c']]],
['disabletrayicon',['disabletrayicon',['../remmina_8c.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon():&#160;remmina.c'],['../remmina__pref_8h.html#af2649a017ee95bd78adf58fda09c3e58',1,'disabletrayicon():&#160;remmina.c']]],
['disconnect',['disconnect',['../struct___remmina_protocol_widget_class.html#a5d723669f6520949e5e0b47e8f2c5213',1,'_RemminaProtocolWidgetClass']]],
diff --git a/public/search/variables_5.js b/public/search/variables_5.js
index 41d54aed0..91b979f51 100644
--- a/public/search/variables_5.js
+++ b/public/search/variables_5.js
@@ -49,7 +49,6 @@ var searchData=
['event_5fqueue',['event_queue',['../structrf__context.html#a5d119b1f108fe84c74e6484d48c2a565',1,'rf_context']]],
['event_5ftype',['event_type',['../struct___remmina_plugin_vnc_event.html#a0ffbaa26908fd25e653dfaf5ad8ccff0',1,'_RemminaPluginVncEvent']]],
['events',['events',['../remmina__ssh_8c.html#a82463718695c17094aa41c974eb35d61',1,'remmina_ssh.c']]],
- ['eweekdays',['eweekdays',['../rmnews_8c.html#af4777302c760225b833206545e9f437d',1,'rmnews.c']]],
['exception_5fhandler',['exception_handler',['../struct___py_g_closure.html#ad62131315a6dd08a8454c683709756b5',1,'_PyGClosure']]],
['exec',['exec',['../struct___remmina_s_s_h_shell.html#a2d56befd61e28b83f90fe3eff0e6dfe7',1,'_RemminaSSHShell']]],
['exec_5ffunc',['exec_func',['../struct___remmina_tool_plugin.html#ad83c522c030d51d5f0313b1f77f04d74',1,'_RemminaToolPlugin']]],
diff --git a/public/search/variables_e.js b/public/search/variables_e.js
index 28166ed80..24086d916 100644
--- a/public/search/variables_e.js
+++ b/public/search/variables_e.js
@@ -17,6 +17,5 @@ var searchData=
['orig_5fhandler',['orig_handler',['../struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361',1,'_RemminaPluginX2GoData']]],
['orig_5fkeycode',['orig_keycode',['../structremmina__plugin__rdp__keymap__entry.html#a20d8c7c462c3cb173e3baedbc19a8a88',1,'remmina_plugin_rdp_keymap_entry']]],
['orphaned',['orphaned',['../structrf__context.html#ad4ea260ce64d09deea422b9067ee70b4',1,'rf_context']]],
- ['output_5ffile_5fpath',['output_file_path',['../rmnews_8c.html#a565782499953048b5e51934123195e29',1,'rmnews.c']]],
['override_5fview_5ffile_5fmode_5fto_5flist',['override_view_file_mode_to_list',['../struct___remmina_main_priv.html#a0307278dd7770ab490f4687f2eb00e76',1,'_RemminaMainPriv']]]
];
diff --git a/public/search/variables_f.js b/public/search/variables_f.js
index 1d4f01330..3cfcb5c76 100644
--- a/public/search/variables_f.js
+++ b/public/search/variables_f.js
@@ -15,10 +15,6 @@ var searchData=
['path',['path',['../structremmina__masterthread__exec__data.html#ab2d4a59a7498371e4a12516a4d4349c9',1,'remmina_masterthread_exec_data']]],
['pcount',['pcount',['../struct_profiles_data.html#afc9e80a1835d8ec7e84ee74b82a0d680',1,'ProfilesData']]],
['pdatestr',['pdatestr',['../struct_profiles_data.html#a1078e772be8dfc9aad54d3f14efd96c4',1,'ProfilesData']]],
- ['periodic_5fnews_5fpermitted',['periodic_news_permitted',['../struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4',1,'_RemminaPref']]],
- ['periodic_5frmnews_5fget_5fcount',['periodic_rmnews_get_count',['../struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005',1,'_RemminaPref']]],
- ['periodic_5frmnews_5flast_5fget',['periodic_rmnews_last_get',['../struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6',1,'_RemminaPref']]],
- ['periodic_5frmnews_5fuuid_5fprefix',['periodic_rmnews_uuid_prefix',['../struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06',1,'_RemminaPref']]],
['pflags',['pflags',['../structremmina__protocol__widget__dialog__mt__data__t.html#a92d8a08aba2743f081e22f39fcaf0df8',1,'remmina_protocol_widget_dialog_mt_data_t']]],
['pformatdatarequest',['pFormatDataRequest',['../structremmina__plugin__rdp__event.html#ad3b01f14f235b582b54aa9a0057d5c1c',1,'remmina_plugin_rdp_event']]],
['pformatlist',['pFormatList',['../structremmina__plugin__rdp__event.html#a02c2d40efeac883dcc6294be9782e082',1,'remmina_plugin_rdp_event']]],
diff --git a/public/spice__plugin_8c_source.html b/public/spice__plugin_8c_source.html
index 2389d8141..52b7f7084 100644
--- a/public/spice__plugin_8c_source.html
+++ b/public/spice__plugin_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('spice__plugin_8c_source.html','');});
<div class="title">spice_plugin.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="spice__plugin_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-2018 Denis Ollier</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;<a class="code" href="spice__plugin_8h.html">spice_plugin.h</a>&quot;</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">#define XSPICE_DEFAULT_PORT 5900</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="keyword">enum</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1"> 40</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a> = 1,</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df"> 41</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d"> 42</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278"> 43</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa"> 44</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28"> 45</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a></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;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7"> 48</a></span>&#160;<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *<a class="code" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7">remmina_plugin_service</a> = NULL;</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="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>(SpiceSession *, SpiceChannel *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>(SpiceChannel *, SpiceChannelEvent, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>(SpiceChannel *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(GObject *, GParamSpec *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c">remmina_plugin_spice_session_open_fd</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint fd) __attribute__ ((unused));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1">remmina_plugin_spice_channel_open_fd</a>(SpiceChannel *, <span class="keywordtype">int</span> with_tls, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *) __attribute__ ((unused));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">//static gboolean remmina_plugin_spice_session_open_fd(RemminaProtocolWidget *gp, gint fd);</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//static gboolean remmina_plugin_spice_channel_open_fd(SpiceChannel *, int with_tls, RemminaProtocolWidget *);</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4">remmina_plugin_spice_select_usb_devices</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c">remmina_plugin_spice_file_transfer_new_cb</a>(SpiceMainChannel *, SpiceFileTransferTask *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></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"><a class="line" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39"> 67</a></span>&#160;gchar* <a class="code" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">str_replace</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">string</span>, <span class="keyword">const</span> gchar *search, <span class="keyword">const</span> gchar *replacement)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; gchar *str, **arr;</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; g_return_val_if_fail(<span class="keywordtype">string</span> != NULL, NULL);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; g_return_val_if_fail(search != NULL, NULL);</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="keywordflow">if</span> (replacement == NULL)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; replacement = <span class="stringliteral">&quot;&quot;</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; arr = g_strsplit(<span class="keywordtype">string</span>, search, -1);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (arr != NULL &amp;&amp; arr[0] != NULL)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; str = g_strjoinv(replacement, arr);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; str = g_strdup(<span class="keywordtype">string</span>);</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_strfreev(arr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> str;</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;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a5d23d66bdcf463d31b74ec813d3a0fe5"> 89</a></span>&#160;<a class="code" href="spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c">remmina_plugin_spice_session_open_fd</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keywordtype">int</span> fd)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</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; g_return_val_if_fail(gpdata != NULL, FALSE);</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Opening spice session for FD: %d&quot;</span>, fd);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> spice_session_open_fd(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, fd);</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1"> 101</a></span>&#160;<a class="code" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1">remmina_plugin_spice_channel_open_fd</a>(SpiceChannel *channel, <span class="keywordtype">int</span> with_tls G_GNUC_UNUSED, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_return_val_if_fail(gpdata != NULL, FALSE);</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; gint id, type;</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"> 109</span>&#160; g_object_get(channel, <span class="stringliteral">&quot;channel-id&quot;</span>, &amp;<span class="keywordtype">id</span>, <span class="stringliteral">&quot;channel-type&quot;</span>, &amp;type, NULL);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; REMMINA_PLUGIN_DEBUG (<span class="stringliteral">&quot;Opening channel %p %s %d with FD: %d&quot;</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c">fd</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> spice_channel_open_fd(channel, gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c">fd</a>);</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;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb"> 115</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb">remmina_plugin_spice_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</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; gpdata = g_new0(<a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a>, 1);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>, gpdata, g_free);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a> = spice_session_new();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; g_signal_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="stringliteral">&quot;channel-new&quot;</span>,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; gp);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="stringliteral">&quot;password&quot;</span>, g_strdup(remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>)),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="stringliteral">&quot;read-only&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;viewonly&quot;</span>, FALSE),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="stringliteral">&quot;enable-audio&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;enableaudio&quot;</span>, FALSE),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="stringliteral">&quot;enable-smartcard&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;sharesmartcard&quot;</span>, FALSE),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="stringliteral">&quot;shared-dir&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;sharefolder&quot;</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; NULL);</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; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a> = spice_gtk_session_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a>,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="stringliteral">&quot;auto-clipboard&quot;</span>,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; !remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disableclipboard&quot;</span>, FALSE),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; NULL);</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="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4"> 147</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; gint port;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> gchar *cacert;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; gchar *host, *tunnel;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">/* Setup SSH tunnel if needed */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; tunnel = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae95121f8f944c058d4f0683073f79183">protocol_plugin_start_direct_tunnel</a>(gp, XSPICE_DEFAULT_PORT, FALSE);</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; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l00182"></a><span class="lineno"> 182</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(tunnel,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &amp;host,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; &amp;port);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;host&quot;</span>, host, NULL);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; g_free(host);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; g_free(tunnel);</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; <span class="comment">/* Unencrypted connection */</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (!remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;usetls&quot;</span>, FALSE)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;port&quot;</span>, g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, port), NULL);</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="comment">/* TLS encrypted connection */</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;tls_port&quot;</span>, g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, port), NULL);</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; <span class="comment">/* Server CA certificate */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; cacert = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (cacert) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;ca-file&quot;</span>, cacert, NULL);</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;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; spice_session_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * FIXME: Add a waiting loop until the g_signal &quot;channel-event&quot; occurs.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * If the event is SPICE_CHANNEL_OPENED, TRUE should be returned,</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * otherwise FALSE should be returned.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> TRUE;</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;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb"> 217</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</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; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; g_signal_handlers_disconnect_by_func(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gp);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; g_signal_handlers_disconnect_by_func(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>),</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; gp);</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"> 231</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; spice_session_disconnect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; g_object_unref(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a> = NULL;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f">protocol_plugin_signal_connection_closed</a>(gp);</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781">file_transfers</a>) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; g_hash_table_unref(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781">file_transfers</a>);</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;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></span></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; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db"> 249</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db">remmina_plugin_spice_disable_gst_overlay</a>(SpiceChannel *channel, <span class="keywordtype">void</span>* pipeline_ptr, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; g_signal_stop_emission_by_name(channel, <span class="stringliteral">&quot;gst-video-overlay&quot;</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</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"><a class="line" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe"> 255</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>(SpiceSession *<a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a>, SpiceChannel *channel, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gint id, type;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; g_return_if_fail(gpdata != NULL);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; g_object_get(channel, <span class="stringliteral">&quot;channel-id&quot;</span>, &amp;<span class="keywordtype">id</span>, <span class="stringliteral">&quot;channel-type&quot;</span>, &amp;type, NULL);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; REMMINA_PLUGIN_DEBUG (<span class="stringliteral">&quot;New spice channel %p %s %d&quot;</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>);</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> (SPICE_IS_MAIN_CHANNEL(channel)) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a> = SPICE_MAIN_CHANNEL(channel);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="stringliteral">&quot;channel-event&quot;</span>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>),</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; gp);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="stringliteral">&quot;main-agent-update&quot;</span>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>),</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; gp);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="stringliteral">&quot;new-file-transfer&quot;</span>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c">remmina_plugin_spice_file_transfer_new_cb</a>),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; gp);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></span></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; <span class="keywordflow">if</span> (SPICE_IS_DISPLAY_CHANNEL(channel)) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a> = SPICE_DISPLAY_CHANNEL(channel);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a> = spice_display_new(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; g_signal_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="stringliteral">&quot;notify::ready&quot;</span>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; gp);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), NULL, gp);</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; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablegstvideooverlay&quot;</span>, FALSE)) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="stringliteral">&quot;gst-video-overlay&quot;</span>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db">remmina_plugin_spice_disable_gst_overlay</a>),</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; gp);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</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; }</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; <span class="keywordflow">if</span> (SPICE_IS_INPUTS_CHANNEL(channel)) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New inputs channel&quot;</span>);</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="keywordflow">if</span> (SPICE_IS_PLAYBACK_CHANNEL(channel)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New audio channel&quot;</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;enableaudio&quot;</span>, FALSE)) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02">audio</a> = spice_audio_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, NULL);</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; }</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; <span class="keywordflow">if</span> (SPICE_IS_USBREDIR_CHANNEL(channel)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New usbredir channel&quot;</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</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> (SPICE_IS_WEBDAV_CHANNEL(channel)) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New webdav channel&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;sharefolder&quot;</span>)) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; spice_channel_connect(channel);</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;}</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="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b"> 335</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b">remmina_plugin_spice_ask_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; gint ret;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; gboolean disablepasswordstoring;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; gchar *s_password;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; gboolean save;</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; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; disablepasswordstoring = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE);</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; ret = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(gp,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; (disablepasswordstoring ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>),</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; _(<span class="stringliteral">&quot;Enter SPICE password&quot;</span>),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; NULL,</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; NULL,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; s_password = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; save = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, s_password);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, NULL);</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">else</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> FALSE;</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;password&quot;</span>, s_password, NULL);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> TRUE;</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"><a class="line" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d"> 372</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>(SpiceChannel *channel, SpiceChannelEvent event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gchar *server = NULL;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; gint port;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; &amp;server,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; &amp;port);</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; <span class="keywordflow">switch</span> (event) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_CLOSED:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Disconnected from the SPICE server “%s”.&quot;</span>), server);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Disconnected from %s:%d via SPICE&quot;</span>), server, port);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_OPENED:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Connected to %s:%d via SPICE&quot;</span>), server, port);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_AUTH:</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b">remmina_plugin_spice_ask_auth</a>(gp)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>(gp);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }<span class="keywordflow">else</span>{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">/* Connection is cancelled by the user by clicking cancel on auth panel, close it without showing errors */</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="comment">// remmina_plugin_service-&gt;protocol_plugin_set_error(gp, _(&quot;Invalid password.&quot;));</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_TLS:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;TLS connection error.&quot;</span>));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_IO:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_LINK:</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_CONNECT:</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Connection to the SPICE server dropped.&quot;</span>));</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">break</span>;</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; g_free(server), server = NULL;</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;</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85"> 418</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>(SpiceChannel *channel, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; gboolean connected;</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; g_object_get(channel,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="stringliteral">&quot;agent-connected&quot;</span>, &amp;connected,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; NULL);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (connected) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#aa129753441dbfb630cbdb92e447f1d1e">protocol_plugin_unlock_dynres</a>(gp);</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; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#adfe17c411ffeddeb7539037d37651ca3">protocol_plugin_lock_dynres</a>(gp);</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;}</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438"> 434</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(GObject *display, GParamSpec *param_spec, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gboolean ready;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; g_object_get(display, <span class="stringliteral">&quot;ready&quot;</span>, &amp;ready, NULL);</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; <span class="keywordflow">if</span> (ready) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; g_signal_handlers_disconnect_by_func(display,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>),</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; gp);</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; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed">remmina_protocol_widget_get_current_scale_mode</a>(gp);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; g_object_set(display,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="stringliteral">&quot;scaling&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>),</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="stringliteral">&quot;resize-guest&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>),</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; NULL);</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; SpiceVideoCodecType videocodec = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;videocodec&quot;</span>, 0);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (videocodec) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; guint i;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; GArray *preferred_codecs = g_array_sized_new(FALSE, FALSE,</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">sizeof</span>(gint),</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; (SPICE_VIDEO_CODEC_TYPE_ENUM_END - 1));</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; g_array_append_val(preferred_codecs, videocodec);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">for</span> (i = SPICE_VIDEO_CODEC_TYPE_MJPEG; i &lt; SPICE_VIDEO_CODEC_TYPE_ENUM_END; ++i) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (i != videocodec) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; g_array_append_val(preferred_codecs, i);</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; }</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; <span class="keywordflow">if</span> (!spice_display_channel_change_preferred_video_codec_types(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; (gint *) preferred_codecs-&gt;data,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; preferred_codecs-&gt;len,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; &amp;err)) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Could not set video-codec preference. %s&quot;</span>, err-&gt;message);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; g_error_free(err);</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; g_clear_pointer(&amp;preferred_codecs, g_array_unref);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"># elif SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; spice_display_channel_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; videocodec);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; spice_display_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; videocodec);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor"># endif</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;<span class="preprocessor"># endif</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;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; SpiceImageCompression imagecompression = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;imagecompression&quot;</span>, 0);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (imagecompression) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; spice_display_channel_change_preferred_compression(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; imagecompression);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; spice_display_change_preferred_compression(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; imagecompression);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#endif</span></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; gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(display));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gtk_widget_show(GTK_WIDGET(display));</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; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, GTK_WIDGET(display));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6">protocol_plugin_signal_connection_opened</a>(gp);</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="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment">/* Send a keystroke to the plugin window */</span></div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317"> 520</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> guint keystrokes[], <span class="keyword">const</span> gint keylen)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; spice_display_send_keys(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; keystrokes,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; keylen,</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; SPICE_DISPLAY_KEY_EVENT_CLICK);</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;}</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">/* Send CTRL+ALT+DEL keys keystrokes to the plugin socket widget */</span></div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660"> 534</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660">remmina_plugin_spice_send_ctrlaltdel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; guint keys[] = { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_Delete };</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; <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>(gp, keys, G_N_ELEMENTS(keys));</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da"> 543</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gint width, height;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed">remmina_protocol_widget_get_current_scale_mode</a>(gp);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="stringliteral">&quot;scaling&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>),</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="stringliteral">&quot;resize-guest&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>),</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; NULL);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (scaleMode != <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">/* In scaled mode, the SpiceDisplay will get its dimensions from its parent */</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; gtk_widget_set_size_request(GTK_WIDGET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), -1, -1 );</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">/* In non scaled mode, the plugins forces dimensions of the SpiceDisplay */</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; g_object_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>,</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="stringliteral">&quot;width&quot;</span>, &amp;width,</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="stringliteral">&quot;height&quot;</span>, &amp;height,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; NULL);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_widget_set_size_request(GTK_WIDGET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), width, height);</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;}</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a"> 569</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a">remmina_plugin_spice_query_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> TRUE;</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="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2"> 576</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2">remmina_plugin_spice_call_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a>:</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="stringliteral">&quot;read-only&quot;</span>,</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;viewonly&quot;</span>, FALSE),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; NULL);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>:</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a>,</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="stringliteral">&quot;auto-clipboard&quot;</span>,</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; !remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disableclipboard&quot;</span>, FALSE),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; NULL);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>:</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a>:</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(gp);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>:</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660">remmina_plugin_spice_send_ctrlaltdel</a>(gp);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>:</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4">remmina_plugin_spice_select_usb_devices</a>(gp);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">break</span>;</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;}</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment">/* Array of key/value pairs for preferred video codec</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> * Key - SpiceVideoCodecType (spice/enums.h)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80"> 616</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80">videocodec_list</a>[] =</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="stringliteral">&quot;0&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Default&quot;</span>),</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="stringliteral">&quot;1&quot;</span>, <span class="stringliteral">&quot;mjpeg&quot;</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="stringliteral">&quot;2&quot;</span>, <span class="stringliteral">&quot;vp8&quot;</span>,</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="stringliteral">&quot;3&quot;</span>, <span class="stringliteral">&quot;h264&quot;</span>,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="stringliteral">&quot;4&quot;</span>, <span class="stringliteral">&quot;vp9&quot;</span>,</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="stringliteral">&quot;5&quot;</span>, <span class="stringliteral">&quot;h265&quot;</span>,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; NULL</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="preprocessor"># endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment">/* Array of key/value pairs for preferred video codec</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="comment"> * Key - SpiceImageCompression (spice/enums.h)</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2"> 634</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2">imagecompression_list</a>[] =</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="stringliteral">&quot;0&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Default&quot;</span>),</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="stringliteral">&quot;1&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Off&quot;</span>),</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="stringliteral">&quot;2&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Auto GLZ&quot;</span>),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="stringliteral">&quot;3&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Auto LZ&quot;</span>),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="stringliteral">&quot;4&quot;</span>, <span class="stringliteral">&quot;Quic&quot;</span>,</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="stringliteral">&quot;5&quot;</span>, <span class="stringliteral">&quot;GLZ&quot;</span>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="stringliteral">&quot;6&quot;</span>, <span class="stringliteral">&quot;LZ&quot;</span>,</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="stringliteral">&quot;7&quot;</span>, <span class="stringliteral">&quot;LZ4&quot;</span>,</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; NULL</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;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor">#endif</span></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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59"> 651</a></span>&#160;<span class="keyword">static</span> gchar <a class="code" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59">disablegstvideooverlay_tooltip</a>[] =</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable video overlay if videos are not displayed properly.\n&quot;</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor">#endif</span></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;<span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="comment"> * g) Validation data pointer, will be passed to the validation callback method.</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment"> * h) Validation callback method (Can be NULL. Every entry will be valid then.)</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"> * use following prototype:</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment"> * gboolean mysetting_validator_method(gpointer key, gpointer value,</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> * gpointer key is a gchar* containing the setting&#39;s name,</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"> * gpointer value contains the value which should be validated,</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c"> 673</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c">remmina_plugin_spice_basic_settings</a>[] =</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; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">&quot;server&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">&quot;password&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;User password&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;usetls&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use TLS encryption&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">&quot;cacert&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Server CA certificate&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;sharefolder&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Share folder&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, FALSE, NULL, NULL, NULL, NULL }</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;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment">/* Array of RemminaProtocolSetting for advanced settings.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"> * f) Setting Tooltip</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409"> 692</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409">remmina_plugin_spice_advanced_settings</a>[] =</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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">&quot;videocodec&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preferred video codec&quot;</span>), FALSE, <a class="code" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80">videocodec_list</a>, NULL},</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disablegstvideooverlay&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Turn off GStreamer overlay&quot;</span>), FALSE, NULL, disablegstvideooverlay_tooltip},</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">&quot;imagecompression&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preferred image compression&quot;</span>), FALSE, <a class="code" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2">imagecompression_list</a>, NULL},</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disableclipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;No clipboard sync&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Forget passwords after use&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;enableaudio&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable audio channel&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;sharesmartcard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Share smart card&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;viewonly&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;View only&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, TRUE, NULL, NULL}</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;};</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;<span class="comment">/* Array for available features.</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="comment"> * The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */</span></div><div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81"> 713</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> <a class="code" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a>[] =</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; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a>, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), <span class="stringliteral">&quot;viewonly&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;View only&quot;</span>)},</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), <span class="stringliteral">&quot;disableclipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;No clipboard sync&quot;</span>)},</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Send Ctrl+Alt+Delete&quot;</span>), NULL, NULL},</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Select USB devices for redirection&quot;</span>), NULL, NULL},</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf">REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>, NULL, NULL, NULL},</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a>, NULL, NULL, NULL},</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>, 0, NULL, NULL, NULL}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;};</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;</div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998"> 725</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> <a class="code" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998">remmina_plugin_spice</a> =</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; <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, <span class="comment">// Type</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="stringliteral">&quot;SPICE&quot;</span>, <span class="comment">// Name</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SPICE - Simple Protocol for Independent Computing Environments&quot;</span>), <span class="comment">// Description</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="stringliteral">&quot;org.remmina.Remmina-spice-symbolic&quot;</span>, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="stringliteral">&quot;org.remmina.Remmina-spice-ssh-symbolic&quot;</span>, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c">remmina_plugin_spice_basic_settings</a>, <span class="comment">// Array for basic settings</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409">remmina_plugin_spice_advanced_settings</a>, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a">REMMINA_PROTOCOL_SSH_SETTING_TUNNEL</a>, <span class="comment">// SSH settings type</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a>, <span class="comment">// Array for available features</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb">remmina_plugin_spice_init</a>, <span class="comment">// Plugin initialization</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>, <span class="comment">// Plugin open connection</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>, <span class="comment">// Plugin close connection</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a">remmina_plugin_spice_query_feature</a>, <span class="comment">// Query for available features</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2">remmina_plugin_spice_call_feature</a>, <span class="comment">// Call a feature</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; NULL, <span class="comment">// No screenshot support available</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; NULL, <span class="comment">// RCW map event</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; NULL <span class="comment">// RCW unmap event</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;};</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"><a class="line" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875"> 749</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875">remmina_plugin_spice_remove_list_option</a>(gpointer *option_list, <span class="keyword">const</span> gchar *option_to_remove) {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; gpointer *src, *dst;</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; TRACE_CALL(__func__);</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; dst = src = option_list;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">while</span> (*src) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (strcmp(*src, option_to_remove) != 0) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (dst != src) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; *dst = *src;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; *(dst + 1) = *(src + 1);</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; dst += 2;</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; src += 2;</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"> 765</span>&#160; *dst = NULL;</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;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b"> 770</a></span>&#160;gboolean <a class="code" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b">remmina_plugin_spice_is_lz4_supported</a>() {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; gboolean result = FALSE;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; GOptionContext *context;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; GOptionGroup *spiceGroup;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; gchar *spiceHelp;</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; spiceGroup = spice_get_option_group();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; context = g_option_context_new(<span class="stringliteral">&quot;- SPICE client test application&quot;</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; g_option_context_add_group(context, spiceGroup);</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; spiceHelp = g_option_context_get_help(context, FALSE, spiceGroup);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(spiceHelp, <span class="stringliteral">&quot;&quot;</span>) != 0) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; gchar **spiceHelpLines, **line;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; spiceHelpLines = g_strsplit(spiceHelp, <span class="stringliteral">&quot;\n&quot;</span>, -1);</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; <span class="keywordflow">for</span> (line = spiceHelpLines; *line != NULL; ++line) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">&quot;spice-preferred-compression&quot;</span>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">&quot;,lz4,&quot;</span>)) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; result = TRUE;</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"> 793</span>&#160; <span class="keywordflow">break</span>;</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; g_strfreev(spiceHelpLines);</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; g_option_context_free(context);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; g_free(spiceHelp);</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"> 802</span>&#160; <span class="keywordflow">return</span> result;</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;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;G_MODULE_EXPORT gboolean</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 808</a></span>&#160;<a class="code" href="spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208">remmina_plugin_entry</a>(<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *service)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; remmina_plugin_service = service;</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; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b">remmina_plugin_spice_is_lz4_supported</a>()) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordtype">char</span> key_str[10];</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; sprintf(key_str, <span class="stringliteral">&quot;%d&quot;</span>, SPICE_IMAGE_COMPRESSION_LZ4);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875">remmina_plugin_spice_remove_list_option</a>(imagecompression_list, key_str);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#endif</span></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> (!service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)&amp;remmina_plugin_spice)) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;}</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div><div class="ttc" id="spice__plugin_8c_html_a656cda0ea6cda6991e94119284d3ae81"><div class="ttname"><a href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a></div><div class="ttdeci">static const RemminaProtocolFeature remmina_plugin_spice_features[]</div><div class="ttdef"><b>Definition:</b> <a href="spice__plugin_8c_source.html#l00713">spice_plugin.c:713</a></div></div>
+<a href="spice__plugin_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-2018 Denis Ollier</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;<a class="code" href="spice__plugin_8h.html">spice_plugin.h</a>&quot;</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">#define XSPICE_DEFAULT_PORT 5900</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="keyword">enum</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1"> 40</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a> = 1,</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df"> 41</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d"> 42</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278"> 43</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa"> 44</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28"> 45</a></span>&#160; <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a></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;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7"> 48</a></span>&#160;<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *<a class="code" href="spice__plugin_8c.html#a9493664f6bdafe3f5b593c3e5e1eacc7">remmina_plugin_service</a> = NULL;</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="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>(SpiceSession *, SpiceChannel *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>(SpiceChannel *, SpiceChannelEvent, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>(SpiceChannel *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(GObject *, GParamSpec *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c">remmina_plugin_spice_session_open_fd</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gint fd) __attribute__ ((unused));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1">remmina_plugin_spice_channel_open_fd</a>(SpiceChannel *, <span class="keywordtype">int</span> with_tls, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *) __attribute__ ((unused));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">//static gboolean remmina_plugin_spice_session_open_fd(RemminaProtocolWidget *gp, gint fd);</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//static gboolean remmina_plugin_spice_channel_open_fd(SpiceChannel *, int with_tls, RemminaProtocolWidget *);</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4">remmina_plugin_spice_select_usb_devices</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c">remmina_plugin_spice_file_transfer_new_cb</a>(SpiceMainChannel *, SpiceFileTransferTask *, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></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"><a class="line" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39"> 67</a></span>&#160;gchar* <a class="code" href="spice__plugin_8c.html#a803fb0a249206d60be4ec60d0e091e39">str_replace</a>(<span class="keyword">const</span> gchar *<span class="keywordtype">string</span>, <span class="keyword">const</span> gchar *search, <span class="keyword">const</span> gchar *replacement)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; gchar *str, **arr;</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; g_return_val_if_fail(<span class="keywordtype">string</span> != NULL, NULL);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; g_return_val_if_fail(search != NULL, NULL);</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="keywordflow">if</span> (replacement == NULL)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; replacement = <span class="stringliteral">&quot;&quot;</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; arr = g_strsplit(<span class="keywordtype">string</span>, search, -1);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (arr != NULL &amp;&amp; arr[0] != NULL)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; str = g_strjoinv(replacement, arr);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; str = g_strdup(<span class="keywordtype">string</span>);</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_strfreev(arr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> str;</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;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a5d23d66bdcf463d31b74ec813d3a0fe5"> 89</a></span>&#160;<a class="code" href="spice__plugin_8c.html#af9b8103812d533694d6acd8536dee59c">remmina_plugin_spice_session_open_fd</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keywordtype">int</span> fd)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</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; g_return_val_if_fail(gpdata != NULL, FALSE);</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Opening spice session for FD: %d&quot;</span>, fd);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> spice_session_open_fd(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, fd);</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;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">static</span> gboolean</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1"> 101</a></span>&#160;<a class="code" href="spice__plugin_8c.html#add82b0547859dfe12c449754c0d02de1">remmina_plugin_spice_channel_open_fd</a>(SpiceChannel *channel, <span class="keywordtype">int</span> with_tls G_GNUC_UNUSED, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; g_return_val_if_fail(gpdata != NULL, FALSE);</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; gint id, type;</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"> 109</span>&#160; g_object_get(channel, <span class="stringliteral">&quot;channel-id&quot;</span>, &amp;<span class="keywordtype">id</span>, <span class="stringliteral">&quot;channel-type&quot;</span>, &amp;type, NULL);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; REMMINA_PLUGIN_DEBUG (<span class="stringliteral">&quot;Opening channel %p %s %d with FD: %d&quot;</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c">fd</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> spice_channel_open_fd(channel, gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#af3dc7bbb6fa01e8f707cbdfd1908b18c">fd</a>);</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;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb"> 115</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb">remmina_plugin_spice_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</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; gpdata = g_new0(<a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a>, 1);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>, gpdata, g_free);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a> = spice_session_new();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; g_signal_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="stringliteral">&quot;channel-new&quot;</span>,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>),</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; gp);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="stringliteral">&quot;password&quot;</span>, g_strdup(remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>)),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="stringliteral">&quot;read-only&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;viewonly&quot;</span>, FALSE),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="stringliteral">&quot;enable-audio&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;enableaudio&quot;</span>, FALSE),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="stringliteral">&quot;enable-smartcard&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;sharesmartcard&quot;</span>, FALSE),</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="stringliteral">&quot;shared-dir&quot;</span>, remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;sharefolder&quot;</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; NULL);</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; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a> = spice_gtk_session_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a>,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="stringliteral">&quot;auto-clipboard&quot;</span>,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; !remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disableclipboard&quot;</span>, FALSE),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; NULL);</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="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4"> 147</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; gint port;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> gchar *cacert;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; gchar *host, *tunnel;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">/* Setup SSH tunnel if needed */</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; tunnel = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae95121f8f944c058d4f0683073f79183">protocol_plugin_start_direct_tunnel</a>(gp, XSPICE_DEFAULT_PORT, FALSE);</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; <span class="keywordflow">if</span> (!tunnel) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l00182"></a><span class="lineno"> 182</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(tunnel,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &amp;host,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; &amp;port);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;host&quot;</span>, host, NULL);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; g_free(host);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; g_free(tunnel);</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; <span class="comment">/* Unencrypted connection */</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (!remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;usetls&quot;</span>, FALSE)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;port&quot;</span>, g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, port), NULL);</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="comment">/* TLS encrypted connection */</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;tls_port&quot;</span>, g_strdup_printf(<span class="stringliteral">&quot;%i&quot;</span>, port), NULL);</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; <span class="comment">/* Server CA certificate */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; cacert = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;cacert&quot;</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (cacert) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;ca-file&quot;</span>, cacert, NULL);</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;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; spice_session_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * FIXME: Add a waiting loop until the g_signal &quot;channel-event&quot; occurs.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * If the event is SPICE_CHANNEL_OPENED, TRUE should be returned,</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * otherwise FALSE should be returned.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> TRUE;</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;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb"> 217</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</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; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; g_signal_handlers_disconnect_by_func(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; gp);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; g_signal_handlers_disconnect_by_func(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>),</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; gp);</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"> 231</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; spice_session_disconnect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; g_object_unref(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a> = NULL;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f">protocol_plugin_signal_connection_closed</a>(gp);</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781">file_transfers</a>) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; g_hash_table_unref(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a712404956a8e5ca842dd290700250781">file_transfers</a>);</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;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></span></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; <span class="keywordflow">return</span> FALSE;</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;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db"> 249</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db">remmina_plugin_spice_disable_gst_overlay</a>(SpiceChannel *channel, <span class="keywordtype">void</span>* pipeline_ptr, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; g_signal_stop_emission_by_name(channel, <span class="stringliteral">&quot;gst-video-overlay&quot;</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</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"><a class="line" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe"> 255</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a3d724d152ea404c75d370514962afebe">remmina_plugin_spice_channel_new_cb</a>(SpiceSession *session, SpiceChannel *channel, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gint id, type;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; g_return_if_fail(gpdata != NULL);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; g_object_get(channel, <span class="stringliteral">&quot;channel-id&quot;</span>, &amp;<span class="keywordtype">id</span>, <span class="stringliteral">&quot;channel-type&quot;</span>, &amp;type, NULL);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; REMMINA_PLUGIN_DEBUG (<span class="stringliteral">&quot;New spice channel %p %s %d&quot;</span>, channel, g_type_name(G_OBJECT_TYPE(channel)), <span class="keywordtype">id</span>);</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> (SPICE_IS_MAIN_CHANNEL(channel)) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a57a077aa61d1eb205cb23db22ffd891f">main_channel</a> = SPICE_MAIN_CHANNEL(channel);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="stringliteral">&quot;channel-event&quot;</span>,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>),</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; gp);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="stringliteral">&quot;main-agent-update&quot;</span>,</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>),</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; gp);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="stringliteral">&quot;new-file-transfer&quot;</span>,</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#ae54d54d84d43e029308869ff0fdc967c">remmina_plugin_spice_file_transfer_new_cb</a>),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; gp);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"># endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION(0, 31, 0) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SPICE_GTK_CHECK_VERSION */</span><span class="preprocessor"></span></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; <span class="keywordflow">if</span> (SPICE_IS_DISPLAY_CHANNEL(channel)) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a> = SPICE_DISPLAY_CHANNEL(channel);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a> = spice_display_new(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; g_signal_connect(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="stringliteral">&quot;notify::ready&quot;</span>,</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; gp);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), NULL, gp);</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; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablegstvideooverlay&quot;</span>, FALSE)) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; g_signal_connect(channel,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="stringliteral">&quot;gst-video-overlay&quot;</span>,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#afaf74ca4968ed5e446e00e5e3e9050db">remmina_plugin_spice_disable_gst_overlay</a>),</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; gp);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</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; }</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; <span class="keywordflow">if</span> (SPICE_IS_INPUTS_CHANNEL(channel)) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New inputs channel&quot;</span>);</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="keywordflow">if</span> (SPICE_IS_PLAYBACK_CHANNEL(channel)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New audio channel&quot;</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;enableaudio&quot;</span>, FALSE)) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1c88ad311d86fb0de1dc441150a7da02">audio</a> = spice_audio_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, NULL);</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; }</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; <span class="keywordflow">if</span> (SPICE_IS_USBREDIR_CHANNEL(channel)) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New usbredir channel&quot;</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</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> (SPICE_IS_WEBDAV_CHANNEL(channel)) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;New webdav channel&quot;</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span> (remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;sharefolder&quot;</span>)) {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; spice_channel_connect(channel);</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;}</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="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b"> 335</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b">remmina_plugin_spice_ask_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; gint ret;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; gboolean disablepasswordstoring;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; gchar *s_password;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; gboolean save;</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; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; disablepasswordstoring = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE);</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; ret = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(gp,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; (disablepasswordstoring ? 0 : <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a>),</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; _(<span class="stringliteral">&quot;Enter SPICE password&quot;</span>),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; NULL,</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; NULL,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; NULL);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; s_password = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; save = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, s_password);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>, NULL);</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">else</span> {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> FALSE;</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>, <span class="stringliteral">&quot;password&quot;</span>, s_password, NULL);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">return</span> TRUE;</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"><a class="line" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d"> 372</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a88b764fe9df97235875ba7b9f337c41d">remmina_plugin_spice_main_channel_event_cb</a>(SpiceChannel *channel, SpiceChannelEvent event, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gchar *server = NULL;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; gint port;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; XSPICE_DEFAULT_PORT,</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; &amp;server,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; &amp;port);</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; <span class="keywordflow">switch</span> (event) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_CLOSED:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Disconnected from the SPICE server “%s”.&quot;</span>), server);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Disconnected from %s:%d via SPICE&quot;</span>), server, port);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_OPENED:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Connected to %s:%d via SPICE&quot;</span>), server, port);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_AUTH:</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="spice__plugin_8c.html#a98f60b1a056aa5ab19c8fb5728d4915b">remmina_plugin_spice_ask_auth</a>(gp)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>(gp);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }<span class="keywordflow">else</span>{</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">/* Connection is cancelled by the user by clicking cancel on auth panel, close it without showing errors */</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="comment">// remmina_plugin_service-&gt;protocol_plugin_set_error(gp, _(&quot;Invalid password.&quot;));</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_TLS:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;TLS connection error.&quot;</span>));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_IO:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_LINK:</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">case</span> SPICE_CHANNEL_ERROR_CONNECT:</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Connection to the SPICE server dropped.&quot;</span>));</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>(gp);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">break</span>;</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; g_free(server), server = NULL;</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;</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85"> 418</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#af4ec351ce790acf42bdda614f7e03f85">remmina_plugin_spice_agent_connected_event_cb</a>(SpiceChannel *channel, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; gboolean connected;</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; g_object_get(channel,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="stringliteral">&quot;agent-connected&quot;</span>, &amp;connected,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; NULL);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span> (connected) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#aa129753441dbfb630cbdb92e447f1d1e">protocol_plugin_unlock_dynres</a>(gp);</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; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#adfe17c411ffeddeb7539037d37651ca3">protocol_plugin_lock_dynres</a>(gp);</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;}</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438"> 434</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>(GObject *display, GParamSpec *param_spec, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gboolean ready;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; g_object_get(display, <span class="stringliteral">&quot;ready&quot;</span>, &amp;ready, NULL);</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; <span class="keywordflow">if</span> (ready) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; g_signal_handlers_disconnect_by_func(display,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; G_CALLBACK(<a class="code" href="spice__plugin_8c.html#a0524df751040673aec5d62839c76a438">remmina_plugin_spice_display_ready_cb</a>),</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; gp);</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; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed">remmina_protocol_widget_get_current_scale_mode</a>(gp);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; g_object_set(display,</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="stringliteral">&quot;scaling&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>),</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="stringliteral">&quot;resize-guest&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>),</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; NULL);</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; SpiceVideoCodecType videocodec = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;videocodec&quot;</span>, 0);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (videocodec) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 38, 0)</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; GError *err = NULL;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; guint i;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; GArray *preferred_codecs = g_array_sized_new(FALSE, FALSE,</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">sizeof</span>(gint),</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; (SPICE_VIDEO_CODEC_TYPE_ENUM_END - 1));</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; g_array_append_val(preferred_codecs, videocodec);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">for</span> (i = SPICE_VIDEO_CODEC_TYPE_MJPEG; i &lt; SPICE_VIDEO_CODEC_TYPE_ENUM_END; ++i) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (i != videocodec) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; g_array_append_val(preferred_codecs, i);</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; }</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; <span class="keywordflow">if</span> (!spice_display_channel_change_preferred_video_codec_types(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; (gint *) preferred_codecs-&gt;data,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; preferred_codecs-&gt;len,</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; &amp;err)) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Could not set video-codec preference. %s&quot;</span>, err-&gt;message);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; g_error_free(err);</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; g_clear_pointer(&amp;preferred_codecs, g_array_unref);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"># elif SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; spice_display_channel_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; videocodec);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; spice_display_change_preferred_video_codec_type(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; videocodec);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor"># endif</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;<span class="preprocessor"># endif</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;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; SpiceImageCompression imagecompression = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;imagecompression&quot;</span>, 0);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (imagecompression) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; spice_display_channel_change_preferred_compression(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; imagecompression);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; spice_display_change_preferred_compression(SPICE_CHANNEL(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>),</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; imagecompression);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#endif</span></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; gtk_container_add(GTK_CONTAINER(gp), GTK_WIDGET(display));</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; gtk_widget_show(GTK_WIDGET(display));</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; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, GTK_WIDGET(display));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6">protocol_plugin_signal_connection_opened</a>(gp);</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="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment">/* Send a keystroke to the plugin window */</span></div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317"> 520</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> guint keystrokes[], <span class="keyword">const</span> gint keylen)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;{</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; spice_display_send_keys(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; keystrokes,</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; keylen,</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; SPICE_DISPLAY_KEY_EVENT_CLICK);</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;}</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">/* Send CTRL+ALT+DEL keys keystrokes to the plugin socket widget */</span></div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660"> 534</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660">remmina_plugin_spice_send_ctrlaltdel</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; guint keys[] = { GDK_KEY_Control_L, GDK_KEY_Alt_L, GDK_KEY_Delete };</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; <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>(gp, keys, G_N_ELEMENTS(keys));</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da"> 543</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</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; TRACE_CALL(__func__);</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; gint width, height;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7de">RemminaScaleMode</a> scaleMode = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae97f4052c4bbda628682ae071ada27ed">remmina_protocol_widget_get_current_scale_mode</a>(gp);</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; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>,</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="stringliteral">&quot;scaling&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a>),</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="stringliteral">&quot;resize-guest&quot;</span>, (scaleMode == <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dea4d22c6eed721b661d618098159a20946">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_DYNRES</a>),</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; NULL);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span> (scaleMode != <a class="code" href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7dead50ff64ad1e14caf78956850f03871bd">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_NONE</a>) {</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">/* In scaled mode, the SpiceDisplay will get its dimensions from its parent */</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; gtk_widget_set_size_request(GTK_WIDGET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), -1, -1 );</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }<span class="keywordflow">else</span> {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">/* In non scaled mode, the plugins forces dimensions of the SpiceDisplay */</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; g_object_get(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a71709da583c41e2eb47236fc94e310d6">display_channel</a>,</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="stringliteral">&quot;width&quot;</span>, &amp;width,</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="stringliteral">&quot;height&quot;</span>, &amp;height,</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; NULL);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_widget_set_size_request(GTK_WIDGET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">display</a>), width, height);</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;}</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a"> 569</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a">remmina_plugin_spice_query_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> TRUE;</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="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2"> 576</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2">remmina_plugin_spice_call_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> *feature)</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;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="struct___remmina_plugin_spice_data.html">RemminaPluginSpiceData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</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; <span class="keywordflow">switch</span> (feature-&gt;<a class="code" href="struct___remmina_protocol_feature.html#a36b55faeba78528ac9708dfa66667e20">id</a>) {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a>:</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a8be20a82752da9a4f7790b3aa8a92633">session</a>,</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="stringliteral">&quot;read-only&quot;</span>,</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;viewonly&quot;</span>, FALSE),</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; NULL);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>:</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; g_object_set(gpdata-&gt;<a class="code" href="struct___remmina_plugin_spice_data.html#a1420dc8738b8485e95441823b4157f69">gtk_session</a>,</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="stringliteral">&quot;auto-clipboard&quot;</span>,</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; !remmina_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(remminafile, <span class="stringliteral">&quot;disableclipboard&quot;</span>, FALSE),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; NULL);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>:</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a>:</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="spice__plugin_8c.html#a7e71aed0226ec167432d57692d1204da">remmina_plugin_spice_update_scale_mode</a>(gp);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>:</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="spice__plugin_8c.html#a4d5a9190784bce617effa0b90e73a660">remmina_plugin_spice_send_ctrlaltdel</a>(gp);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">case</span> <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>:</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <a class="code" href="spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4">remmina_plugin_spice_select_usb_devices</a>(gp);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">break</span>;</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;}</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;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment">/* Array of key/value pairs for preferred video codec</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> * Key - SpiceVideoCodecType (spice/enums.h)</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80"> 616</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80">videocodec_list</a>[] =</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="stringliteral">&quot;0&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Default&quot;</span>),</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="stringliteral">&quot;1&quot;</span>, <span class="stringliteral">&quot;mjpeg&quot;</span>,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="stringliteral">&quot;2&quot;</span>, <span class="stringliteral">&quot;vp8&quot;</span>,</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="stringliteral">&quot;3&quot;</span>, <span class="stringliteral">&quot;h264&quot;</span>,</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="stringliteral">&quot;4&quot;</span>, <span class="stringliteral">&quot;vp9&quot;</span>,</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="stringliteral">&quot;5&quot;</span>, <span class="stringliteral">&quot;h265&quot;</span>,</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; NULL</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="preprocessor"># endif</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment">/* Array of key/value pairs for preferred video codec</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="comment"> * Key - SpiceImageCompression (spice/enums.h)</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00634"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2"> 634</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2">imagecompression_list</a>[] =</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="stringliteral">&quot;0&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Default&quot;</span>),</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="stringliteral">&quot;1&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Off&quot;</span>),</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="stringliteral">&quot;2&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Auto GLZ&quot;</span>),</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="stringliteral">&quot;3&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Auto LZ&quot;</span>),</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="stringliteral">&quot;4&quot;</span>, <span class="stringliteral">&quot;Quic&quot;</span>,</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="stringliteral">&quot;5&quot;</span>, <span class="stringliteral">&quot;GLZ&quot;</span>,</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="stringliteral">&quot;6&quot;</span>, <span class="stringliteral">&quot;LZ&quot;</span>,</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="stringliteral">&quot;7&quot;</span>, <span class="stringliteral">&quot;LZ4&quot;</span>,</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; NULL</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;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor">#endif</span></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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 34, 0)</span></div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59"> 651</a></span>&#160;<span class="keyword">static</span> gchar <a class="code" href="spice__plugin_8c.html#a23fc9f6476b911deae789c91e7011b59">disablegstvideooverlay_tooltip</a>[] =</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Disable video overlay if videos are not displayed properly.\n&quot;</span>);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor">#endif</span></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;<span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="comment"> * g) Validation data pointer, will be passed to the validation callback method.</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment"> * h) Validation callback method (Can be NULL. Every entry will be valid then.)</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"> * use following prototype:</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment"> * gboolean mysetting_validator_method(gpointer key, gpointer value,</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> * gpointer key is a gchar* containing the setting&#39;s name,</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"> * gpointer value contains the value which should be validated,</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c"> 673</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c">remmina_plugin_spice_basic_settings</a>[] =</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; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">&quot;server&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">&quot;password&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;User password&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;usetls&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Use TLS encryption&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">&quot;cacert&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Server CA certificate&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;sharefolder&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Share folder&quot;</span>), FALSE, NULL, NULL, NULL, NULL },</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, FALSE, NULL, NULL, NULL, NULL }</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;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment">/* Array of RemminaProtocolSetting for advanced settings.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"> * f) Setting Tooltip</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409"> 692</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409">remmina_plugin_spice_advanced_settings</a>[] =</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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 35, 0)</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">&quot;videocodec&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preferred video codec&quot;</span>), FALSE, <a class="code" href="spice__plugin_8c.html#ad3d2a519d7808abf0859980339259d80">videocodec_list</a>, NULL},</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disablegstvideooverlay&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Turn off GStreamer overlay&quot;</span>), FALSE, NULL, disablegstvideooverlay_tooltip},</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a04da01eead7904a55d1c813950609b2d">REMMINA_PROTOCOL_SETTING_TYPE_SELECT</a>, <span class="stringliteral">&quot;imagecompression&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Preferred image compression&quot;</span>), FALSE, <a class="code" href="spice__plugin_8c.html#ac43b776356fd0b110cad9433d05eeee2">imagecompression_list</a>, NULL},</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disableclipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;No clipboard sync&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Forget passwords after use&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;enableaudio&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Enable audio channel&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;sharesmartcard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Share smart card&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a52a80f3f9b84e9e0d0bf3335cfd7527f">REMMINA_PROTOCOL_SETTING_TYPE_CHECK</a>, <span class="stringliteral">&quot;viewonly&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;View only&quot;</span>), TRUE, NULL, NULL},</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; { <a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, TRUE, NULL, NULL}</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;};</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;<span class="comment">/* Array for available features.</span></div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="comment"> * The last element of the array must be REMMINA_PROTOCOL_FEATURE_TYPE_END. */</span></div><div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81"> 713</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> <a class="code" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a>[] =</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; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aac0cdff2ecbe3da84d4ed6af8fffd49e1">REMMINA_PLUGIN_SPICE_FEATURE_PREF_VIEWONLY</a>, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), <span class="stringliteral">&quot;viewonly&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;View only&quot;</span>)},</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a26774624e955f451f7e4270c36622527">REMMINA_PROTOCOL_FEATURE_TYPE_PREF</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aaebe753cb882aa4977fd65cf95608c48d">REMMINA_PLUGIN_SPICE_FEATURE_PREF_DISABLECLIPBOARD</a>, GINT_TO_POINTER(REMMINA_PROTOCOL_FEATURE_PREF_CHECK), <span class="stringliteral">&quot;disableclipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;No clipboard sync&quot;</span>)},</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aab8e58c2e2b8f0c94101c892ff98c4278">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_SENDCTRLALTDEL</a>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Send Ctrl+Alt+Delete&quot;</span>), NULL, NULL},</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a645d9a32b55325b3672e265a64d0a507">REMMINA_PROTOCOL_FEATURE_TYPE_TOOL</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa913ab805b98fd1f69ee85765733d16aa">REMMINA_PLUGIN_SPICE_FEATURE_TOOL_USBREDIR</a>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Select USB devices for redirection&quot;</span>), NULL, NULL},</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a23e854b5f2eb0c8d3efa54cac0acb6cf">REMMINA_PROTOCOL_FEATURE_TYPE_DYNRESUPDATE</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa89409c08d91aa2bcb850220e0c8730df">REMMINA_PLUGIN_SPICE_FEATURE_DYNRESUPDATE</a>, NULL, NULL, NULL},</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5affe302f5d3151bfe99607edf308c3c9f">REMMINA_PROTOCOL_FEATURE_TYPE_SCALE</a>, <a class="code" href="spice__plugin_8c.html#aa156d1cebb38c8a65846c4d9c006012aa67d7c8f0daf1509c7404eb0a9062bf28">REMMINA_PLUGIN_SPICE_FEATURE_SCALE</a>, NULL, NULL, NULL},</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; { <a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>, 0, NULL, NULL, NULL}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;};</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;</div><div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998"> 725</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> <a class="code" href="spice__plugin_8c.html#a394f5bc2fd2f06247702ffbf27a94998">remmina_plugin_spice</a> =</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; <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, <span class="comment">// Type</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="stringliteral">&quot;SPICE&quot;</span>, <span class="comment">// Name</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SPICE - Simple Protocol for Independent Computing Environments&quot;</span>), <span class="comment">// Description</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="stringliteral">&quot;org.remmina.Remmina-spice-symbolic&quot;</span>, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="stringliteral">&quot;org.remmina.Remmina-spice-ssh-symbolic&quot;</span>, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="spice__plugin_8c.html#aa6772e43af47ffc62ab556770e3cb56c">remmina_plugin_spice_basic_settings</a>, <span class="comment">// Array for basic settings</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="spice__plugin_8c.html#af3dc7072fd3204a1231025c1ea664409">remmina_plugin_spice_advanced_settings</a>, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7ab0449f571d03e46b99b301792a5d8e1a">REMMINA_PROTOCOL_SSH_SETTING_TUNNEL</a>, <span class="comment">// SSH settings type</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a>, <span class="comment">// Array for available features</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="spice__plugin_8c.html#a4c883dd4ccf9e73e7efb763625d662bb">remmina_plugin_spice_init</a>, <span class="comment">// Plugin initialization</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="spice__plugin_8c.html#aa613e255347fa4f0a7718dd3f96c6ad4">remmina_plugin_spice_open_connection</a>, <span class="comment">// Plugin open connection</span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="spice__plugin_8c.html#a2d6055bfb90c38ca9808bcdfd54ab8cb">remmina_plugin_spice_close_connection</a>, <span class="comment">// Plugin close connection</span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <a class="code" href="spice__plugin_8c.html#a6365349678c9474a169dd505d322b81a">remmina_plugin_spice_query_feature</a>, <span class="comment">// Query for available features</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="spice__plugin_8c.html#ad4b4ee0d3b22a9a7b505819120fd5ab2">remmina_plugin_spice_call_feature</a>, <span class="comment">// Call a feature</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="spice__plugin_8c.html#a96515e819c13b1eb4c4a1416df215317">remmina_plugin_spice_keystroke</a>, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; NULL, <span class="comment">// No screenshot support available</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; NULL, <span class="comment">// RCW map event</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; NULL <span class="comment">// RCW unmap event</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;};</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"><a class="line" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875"> 749</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875">remmina_plugin_spice_remove_list_option</a>(gpointer *option_list, <span class="keyword">const</span> gchar *option_to_remove) {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; gpointer *src, *dst;</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; TRACE_CALL(__func__);</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; dst = src = option_list;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">while</span> (*src) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (strcmp(*src, option_to_remove) != 0) {</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (dst != src) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; *dst = *src;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; *(dst + 1) = *(src + 1);</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; dst += 2;</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; src += 2;</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"> 765</span>&#160; *dst = NULL;</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;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;<span class="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b"> 770</a></span>&#160;gboolean <a class="code" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b">remmina_plugin_spice_is_lz4_supported</a>() {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; gboolean result = FALSE;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; GOptionContext *context;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; GOptionGroup *spiceGroup;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; gchar *spiceHelp;</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; spiceGroup = spice_get_option_group();</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; context = g_option_context_new(<span class="stringliteral">&quot;- SPICE client test application&quot;</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; g_option_context_add_group(context, spiceGroup);</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; spiceHelp = g_option_context_get_help(context, FALSE, spiceGroup);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(spiceHelp, <span class="stringliteral">&quot;&quot;</span>) != 0) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; gchar **spiceHelpLines, **line;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; spiceHelpLines = g_strsplit(spiceHelp, <span class="stringliteral">&quot;\n&quot;</span>, -1);</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; <span class="keywordflow">for</span> (line = spiceHelpLines; *line != NULL; ++line) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">&quot;spice-preferred-compression&quot;</span>)) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (g_strstr_len(*line, -1, <span class="stringliteral">&quot;,lz4,&quot;</span>)) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; result = TRUE;</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"> 793</span>&#160; <span class="keywordflow">break</span>;</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; g_strfreev(spiceHelpLines);</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; g_option_context_free(context);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; g_free(spiceHelp);</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"> 802</span>&#160; <span class="keywordflow">return</span> result;</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;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;G_MODULE_EXPORT gboolean</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 808</a></span>&#160;<a class="code" href="spice__plugin_8c.html#a56e5020de11446dbc23f3480e313f208">remmina_plugin_entry</a>(<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *service)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; remmina_plugin_service = service;</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; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</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="preprocessor">#ifdef SPICE_GTK_CHECK_VERSION</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor"># if SPICE_GTK_CHECK_VERSION(0, 31, 0)</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="spice__plugin_8c.html#af8deff9dded79195228e3f05d145f92b">remmina_plugin_spice_is_lz4_supported</a>()) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordtype">char</span> key_str[10];</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; sprintf(key_str, <span class="stringliteral">&quot;%d&quot;</span>, SPICE_IMAGE_COMPRESSION_LZ4);</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <a class="code" href="spice__plugin_8c.html#a8b76789eb5de86da19c5524ed28c3875">remmina_plugin_spice_remove_list_option</a>(imagecompression_list, key_str);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; }</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#endif</span></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> (!service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a>*)&amp;remmina_plugin_spice)) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;}</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div><div class="ttc" id="spice__plugin_8c_html_a656cda0ea6cda6991e94119284d3ae81"><div class="ttname"><a href="spice__plugin_8c.html#a656cda0ea6cda6991e94119284d3ae81">remmina_plugin_spice_features</a></div><div class="ttdeci">static const RemminaProtocolFeature remmina_plugin_spice_features[]</div><div class="ttdef"><b>Definition:</b> <a href="spice__plugin_8c_source.html#l00713">spice_plugin.c:713</a></div></div>
<div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00100">types.h:100</a></div></div>
<div class="ttc" id="struct___remmina_plugin_spice_data_html_a5f24bd5d68722f7e265c0d61c89257ad"><div class="ttname"><a href="struct___remmina_plugin_spice_data.html#a5f24bd5d68722f7e265c0d61c89257ad">_RemminaPluginSpiceData::display</a></div><div class="ttdeci">SpiceDisplay * display</div><div class="ttdef"><b>Definition:</b> <a href="spice__plugin_8h_source.html#l00078">spice_plugin.h:78</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>
@@ -129,7 +129,6 @@ $(document).ready(function(){initNavTree('spice__plugin_8c_source.html','');});
<div class="ttc" id="types_8h_html_aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20"><div class="ttname"><a href="types_8h.html#aeea5ee1e675368413b6f6ab09883e7deac7786e2cea7d9bf95026069ed774ea20">REMMINA_PROTOCOL_WIDGET_SCALE_MODE_SCALED</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00143">types.h:143</a></div></div>
<div class="ttc" id="spice__plugin_8c_html_a4d5d7d8022476b79a9e4b517adefa9a4"><div class="ttname"><a href="spice__plugin_8c.html#a4d5d7d8022476b79a9e4b517adefa9a4">remmina_plugin_spice_select_usb_devices</a></div><div class="ttdeci">void remmina_plugin_spice_select_usb_devices(RemminaProtocolWidget *)</div><div class="ttdef"><b>Definition:</b> <a href="spice__plugin__usb_8c_source.html#l00039">spice_plugin_usb.c:39</a></div></div>
<div class="ttc" id="struct___remmina_plugin_service_html_a529cc64f67b16f13f0445add690a8df2"><div class="ttname"><a href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">_RemminaPluginService::register_plugin</a></div><div class="ttdeci">gboolean(* register_plugin)(RemminaPlugin *plugin)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00166">plugin.h:166</a></div></div>
-<div class="ttc" id="rmnews_8c_html_a175c6dbec04bf34e3f2a5bd791d2d336"><div class="ttname"><a href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a></div><div class="ttdeci">static SoupSession * session</div><div class="ttdef"><b>Definition:</b> <a href="rmnews_8c_source.html#l00076">rmnews.c:76</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="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>
diff --git a/public/struct___remmina_pref.html b/public/struct___remmina_pref.html
index 265deb572..9f967f767 100644
--- a/public/struct___remmina_pref.html
+++ b/public/struct___remmina_pref.html
@@ -267,14 +267,6 @@ Data Fields</h2></td></tr>
<tr class="separator:a85e3d3ef34fb8969211860df159a04d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb4afc1d03afffed838149645eccc9dd"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref.html#aeb4afc1d03afffed838149645eccc9dd">last_success</a></td></tr>
<tr class="separator:aeb4afc1d03afffed838149645eccc9dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad11e485a8fdb8af1fded85f68f4ba7c4"><td class="memItemLeft" align="right" valign="top">gboolean&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4">periodic_news_permitted</a></td></tr>
-<tr class="separator:ad11e485a8fdb8af1fded85f68f4ba7c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58fce08bda1efaeefd8b65f6463f67c6"><td class="memItemLeft" align="right" valign="top">glong&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6">periodic_rmnews_last_get</a></td></tr>
-<tr class="separator:a58fce08bda1efaeefd8b65f6463f67c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1b13dc96ccf8ebad045f02c58eb1d005"><td class="memItemLeft" align="right" valign="top">glong&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005">periodic_rmnews_get_count</a></td></tr>
-<tr class="separator:a1b13dc96ccf8ebad045f02c58eb1d005"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a87044f758cc0e9c975b02c3f94147e06"><td class="memItemLeft" align="right" valign="top">gchar *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06">periodic_rmnews_uuid_prefix</a></td></tr>
-<tr class="separator:a87044f758cc0e9c975b02c3f94147e06"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
@@ -872,70 +864,6 @@ Data Fields</h2></td></tr>
</div>
</div>
-<a id="ad11e485a8fdb8af1fded85f68f4ba7c4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ad11e485a8fdb8af1fded85f68f4ba7c4">&#9670;&nbsp;</a></span>periodic_news_permitted</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">gboolean _RemminaPref::periodic_news_permitted</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8h_source.html#l00239">239</a> of file <a class="el" href="remmina__pref_8h_source.html">remmina_pref.h</a>.</p>
-
-</div>
-</div>
-<a id="a1b13dc96ccf8ebad045f02c58eb1d005"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a1b13dc96ccf8ebad045f02c58eb1d005">&#9670;&nbsp;</a></span>periodic_rmnews_get_count</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">glong _RemminaPref::periodic_rmnews_get_count</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8h_source.html#l00241">241</a> of file <a class="el" href="remmina__pref_8h_source.html">remmina_pref.h</a>.</p>
-
-</div>
-</div>
-<a id="a58fce08bda1efaeefd8b65f6463f67c6"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a58fce08bda1efaeefd8b65f6463f67c6">&#9670;&nbsp;</a></span>periodic_rmnews_last_get</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">glong _RemminaPref::periodic_rmnews_last_get</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8h_source.html#l00240">240</a> of file <a class="el" href="remmina__pref_8h_source.html">remmina_pref.h</a>.</p>
-
-</div>
-</div>
-<a id="a87044f758cc0e9c975b02c3f94147e06"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a87044f758cc0e9c975b02c3f94147e06">&#9670;&nbsp;</a></span>periodic_rmnews_uuid_prefix</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">gchar* _RemminaPref::periodic_rmnews_uuid_prefix</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__pref_8h_source.html#l00242">242</a> of file <a class="el" href="remmina__pref_8h_source.html">remmina_pref.h</a>.</p>
-
-</div>
-</div>
<a id="a18872e092d22f5d3accb66d6a22845d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18872e092d22f5d3accb66d6a22845d7">&#9670;&nbsp;</a></span>prevent_snap_welcome_message</h2>
diff --git a/public/struct___remmina_pref.js b/public/struct___remmina_pref.js
index d71aa9981..5a526e357 100644
--- a/public/struct___remmina_pref.js
+++ b/public/struct___remmina_pref.js
@@ -37,10 +37,6 @@ var struct___remmina_pref =
[ "main_sort_column_id", "struct___remmina_pref.html#ac13f1310a2625b29defdf5b0ba8fd2d0", null ],
[ "main_sort_order", "struct___remmina_pref.html#a4504684f0e67bb50157fd6862182e2c4", null ],
[ "main_width", "struct___remmina_pref.html#a6318ff8e2f73d36fb8b35cbed503c222", null ],
- [ "periodic_news_permitted", "struct___remmina_pref.html#ad11e485a8fdb8af1fded85f68f4ba7c4", null ],
- [ "periodic_rmnews_get_count", "struct___remmina_pref.html#a1b13dc96ccf8ebad045f02c58eb1d005", null ],
- [ "periodic_rmnews_last_get", "struct___remmina_pref.html#a58fce08bda1efaeefd8b65f6463f67c6", null ],
- [ "periodic_rmnews_uuid_prefix", "struct___remmina_pref.html#a87044f758cc0e9c975b02c3f94147e06", null ],
[ "prevent_snap_welcome_message", "struct___remmina_pref.html#a18872e092d22f5d3accb66d6a22845d7", null ],
[ "recent_maximum", "struct___remmina_pref.html#ab78e34f426da9a37b467efbdf2183644", null ],
[ "remmina_file_name", "struct___remmina_pref.html#aa1544a98f03088dc260ed98f2deac94f", null ],
diff --git a/public/struct___remmina_pref_dialog.html b/public/struct___remmina_pref_dialog.html
index 74e2c0f0c..e6be54f03 100644
--- a/public/struct___remmina_pref_dialog.html
+++ b/public/struct___remmina_pref_dialog.html
@@ -139,8 +139,6 @@ Data Fields</h2></td></tr>
<tr class="separator:a4c6b01300d82ee50a036fc9fb758cb1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41f551c6f21f4a448e4c5ec1186240fd"><td class="memItemLeft" align="right" valign="top">GtkCheckButton *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref_dialog.html#a41f551c6f21f4a448e4c5ec1186240fd">checkbutton_appearance_hide_searchbar</a></td></tr>
<tr class="separator:a41f551c6f21f4a448e4c5ec1186240fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa3278e52c1e387ab37a6c384f83ad03a"><td class="memItemLeft" align="right" valign="top">GtkSwitch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a">switch_permit_news</a></td></tr>
-<tr class="separator:aa3278e52c1e387ab37a6c384f83ad03a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86e2ecb7e448ef661c2857de7b724061"><td class="memItemLeft" align="right" valign="top">GtkComboBox *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref_dialog.html#a86e2ecb7e448ef661c2857de7b724061">comboboxtext_options_double_click</a></td></tr>
<tr class="separator:a86e2ecb7e448ef661c2857de7b724061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a917c214ab0662ebd06db3eb7f7c47bf2"><td class="memItemLeft" align="right" valign="top">GtkComboBox *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct___remmina_pref_dialog.html#a917c214ab0662ebd06db3eb7f7c47bf2">comboboxtext_appearance_view_mode</a></td></tr>
@@ -328,7 +326,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00100">100</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00099">99</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -344,7 +342,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00120">120</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00119">119</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -360,7 +358,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00124">124</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00123">123</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -376,7 +374,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00109">109</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00108">108</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -392,7 +390,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00099">99</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00098">98</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -408,7 +406,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00105">105</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00104">104</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -424,7 +422,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00098">98</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00097">97</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -440,7 +438,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00123">123</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00122">122</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -456,7 +454,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00108">108</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00107">107</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -472,7 +470,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00104">104</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00103">103</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -488,7 +486,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00121">121</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00120">120</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -504,7 +502,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00103">103</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00102">102</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -520,7 +518,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00106">106</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00105">105</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -536,7 +534,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00125">125</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00124">124</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -552,7 +550,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00122">122</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00121">121</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -568,7 +566,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00101">101</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00100">100</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -584,7 +582,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00102">102</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00101">101</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -600,7 +598,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00110">110</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00109">109</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -616,7 +614,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00107">107</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00106">106</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -632,7 +630,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00089">89</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00088">88</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -648,7 +646,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00090">90</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00089">89</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -664,7 +662,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00151">151</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00150">150</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -760,7 +758,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00094">94</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00093">93</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -776,7 +774,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00093">93</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00092">92</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -792,7 +790,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00092">92</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00091">91</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -808,7 +806,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00096">96</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00095">95</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -824,7 +822,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00095">95</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00094">94</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -856,7 +854,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00080">80</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00079">79</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -872,7 +870,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00118">118</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00117">117</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -888,7 +886,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00135">135</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00134">134</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -904,7 +902,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00136">136</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00135">135</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -920,7 +918,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00145">145</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00144">144</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -936,7 +934,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00146">146</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00145">145</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -952,7 +950,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00147">147</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00146">146</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -968,7 +966,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00148">148</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00147">147</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -984,7 +982,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00149">149</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00148">148</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1000,7 +998,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00150">150</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00149">149</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1016,7 +1014,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00137">137</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00136">136</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1032,7 +1030,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00138">138</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00137">137</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1048,7 +1046,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00139">139</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00138">138</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1064,7 +1062,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00140">140</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00139">139</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1080,7 +1078,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00141">141</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00140">140</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1096,7 +1094,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00142">142</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00141">141</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1112,7 +1110,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00143">143</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00142">142</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1128,7 +1126,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00144">144</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00143">143</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1144,7 +1142,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00134">134</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00133">133</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1160,7 +1158,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00130">130</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00129">129</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1176,7 +1174,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00131">131</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00130">130</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1192,7 +1190,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00116">116</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00115">115</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1208,7 +1206,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00132">132</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00131">131</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1224,7 +1222,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00133">133</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00132">132</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1240,7 +1238,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00078">78</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00077">77</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1256,7 +1254,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00075">75</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00074">74</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1272,7 +1270,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00074">74</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00073">73</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1288,7 +1286,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00073">73</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00072">72</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1304,7 +1302,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00076">76</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00075">75</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1320,7 +1318,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00077">77</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00076">76</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1336,7 +1334,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00079">79</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00078">78</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1368,7 +1366,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00088">88</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00087">87</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1400,7 +1398,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00087">87</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00086">86</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1432,7 +1430,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00086">86</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00085">85</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1448,7 +1446,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00081">81</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00080">80</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1464,7 +1462,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00084">84</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00083">83</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1480,7 +1478,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00082">82</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00081">81</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1496,7 +1494,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00083">83</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00082">82</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1512,7 +1510,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00085">85</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00084">84</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1528,7 +1526,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00119">119</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00118">118</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1576,7 +1574,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00113">113</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00112">112</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1592,7 +1590,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00117">117</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00116">116</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1608,7 +1606,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00127">127</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00126">126</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1624,7 +1622,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00129">129</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00128">128</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1640,7 +1638,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00126">126</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00125">125</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1656,7 +1654,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00115">115</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00114">114</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1672,7 +1670,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00128">128</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00127">127</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1704,7 +1702,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00153">153</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00152">152</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1772,22 +1770,6 @@ Data Fields</h2></td></tr>
</div>
</div>
-<a id="aa3278e52c1e387ab37a6c384f83ad03a"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#aa3278e52c1e387ab37a6c384f83ad03a">&#9670;&nbsp;</a></span>switch_permit_news</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GtkSwitch* _RemminaPrefDialog::switch_permit_news</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00072">72</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
-
-</div>
-</div>
<a id="a9d7979bea3b5b1e6d4c0f30be3424ac3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d7979bea3b5b1e6d4c0f30be3424ac3">&#9670;&nbsp;</a></span>switch_security_audit</h2>
@@ -1880,7 +1862,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00114">114</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00113">113</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
@@ -1896,7 +1878,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00112">112</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
+<p class="definition">Definition at line <a class="el" href="remmina__pref__dialog_8h_source.html#l00111">111</a> of file <a class="el" href="remmina__pref__dialog_8h_source.html">remmina_pref_dialog.h</a>.</p>
</div>
</div>
diff --git a/public/struct___remmina_pref_dialog.js b/public/struct___remmina_pref_dialog.js
index 9629a3888..246ec4001 100644
--- a/public/struct___remmina_pref_dialog.js
+++ b/public/struct___remmina_pref_dialog.js
@@ -92,7 +92,6 @@ var struct___remmina_pref_dialog =
[ "switch_options_confirm_close", "struct___remmina_pref_dialog.html#a91063a718e43d8aa78935f5c3c7eabaa", null ],
[ "switch_options_deny_screenshot_clipboard", "struct___remmina_pref_dialog.html#ad92dc760283fa996f40a976bcc3f3d2d", null ],
[ "switch_options_remember_last_view_mode", "struct___remmina_pref_dialog.html#a7ab49071b369069912565f3e0a8b000b", null ],
- [ "switch_permit_news", "struct___remmina_pref_dialog.html#aa3278e52c1e387ab37a6c384f83ad03a", null ],
[ "switch_security_audit", "struct___remmina_pref_dialog.html#a9d7979bea3b5b1e6d4c0f30be3424ac3", null ],
[ "switch_security_lock_connect", "struct___remmina_pref_dialog.html#a51d126c252f956a7ab304da158287193", null ],
[ "switch_security_lock_edit", "struct___remmina_pref_dialog.html#a285a521c1fb119f9c703d434d9619018", null ],
diff --git a/public/x2go__plugin_8c_source.html b/public/x2go__plugin_8c_source.html
index 08010d785..9b6c75a14 100644
--- a/public/x2go__plugin_8c_source.html
+++ b/public/x2go__plugin_8c_source.html
@@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('x2go__plugin_8c_source.html','');});
<div class="title">x2go_plugin.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="x2go__plugin_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"> * Project: Remmina Plugin X2Go</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Description: Remmina protocol plugin to connect via X2Go using PyHocaCLI</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Author: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Antenore Gatta &lt;antenore@simbiosi.org&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Copyright: 2010-2011 Vic Lee</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * 2015 Antenore Gatta</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * 2016-2018 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * 2019 Mike Gabriel</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * 2021 Daniel Teichmann</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * License: GPL-2+</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> */</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"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="x2go__plugin_8h.html">x2go_plugin.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__plugin_8h.html">common/remmina_plugin.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">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</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="preprocessor">#include &lt;X11/Xlib.h&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &lt;X11/XKBlib.h&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;X11/extensions/XKBrules.h&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;ctype.h&gt;</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;<span class="preprocessor">#define FEATURE_AVAILABLE(gpdata, feature) \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> gpdata-&gt;available_features ? (g_list_find_custom( \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"> gpdata-&gt;available_features, \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"> feature, \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> (GCompareFunc) g_strcmp0 \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"> ) ? TRUE : FALSE) : FALSE</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 FEATURE_NOT_AVAIL_STR(feature) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"> g_strdup_printf(_(&quot;The command-line feature &#39;%s&#39; is not available! Attempting &quot; \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"> &quot;to start PyHoca-CLI without using this feature…&quot;), feature)</span></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="preprocessor">#define GET_PLUGIN_DATA(gp) \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"> (RemminaPluginX2GoData*) g_object_get_data(G_OBJECT(gp), &quot;plugin-data&quot;)</span></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"> 77</span>&#160;<span class="comment">// --------- SESSIONS ------------</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#define SET_RESUME_SESSION(gp, resume_data) \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), &quot;resume-session-data&quot;, \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> resume_data, \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"> g_free)</span></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="preprocessor">#define GET_RESUME_SESSION(gp) \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"> (gchar*) g_object_get_data(G_OBJECT(gp), &quot;resume-session-data&quot;)</span></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;<span class="comment">// A session is selected if the returning value is something other than 0.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#define IS_SESSION_SELECTED(gp) \</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"> g_object_get_data(G_OBJECT(gp), &quot;session-selected&quot;) ? TRUE : FALSE</span></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">// We don&#39;t use the function as a real pointer but rather as a boolean value.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define SET_SESSION_SELECTED(gp, is_session_selected) \</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), &quot;session-selected&quot;, \</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"> is_session_selected, \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"> NULL)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">// -------------------</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_INFO(fmt, ...) \</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_info(&quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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="preprocessor">#define REMMINA_PLUGIN_MESSAGE(fmt, ...) \</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_message(&quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_DEBUG(fmt, ...) \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_debug(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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"> 109</span>&#160;<span class="preprocessor">#define REMMINA_PLUGIN_WARNING(fmt, ...) \</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_warning(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_AUDIT(fmt, ...) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_audit(__func__, fmt, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_ERROR(fmt, ...) \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_error(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_CRITICAL(fmt, ...) \</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_critical(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</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="preprocessor">#define GET_PLUGIN_STRING(value) \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor"> g_strdup(rm_plugin_service-&gt;file_get_string(remminafile, value))</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="preprocessor">#define GET_PLUGIN_PASSWORD(value) \</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"> GET_PLUGIN_STRING(value)</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="preprocessor">#define GET_PLUGIN_INT(value, default_value) \</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;file_get_int(remminafile, value, default_value)</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="preprocessor">#define GET_PLUGIN_BOOLEAN(value) \</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;file_get_int(remminafile, value, FALSE)</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"><a class="line" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b"> 136</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *<a class="code" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b">rm_plugin_service</a> = 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"><a class="line" href="struct___remmina_plugin_x2_go_data.html"> 138</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2"> 139</a></span>&#160; GtkWidget *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe"> 140</a></span>&#160; gint <a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916"> 142</a></span>&#160; pthread_t <a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5"> 144</a></span>&#160; Display *<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022"> 145</a></span>&#160; Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361"> 146</a></span>&#160; int (*<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>)(Display *, XErrorEvent *);</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393"> 148</a></span>&#160; GPid <a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>;</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a"> 150</a></span>&#160; gboolean <a class="code" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a">disconnected</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e"> 152</a></span>&#160; GList* <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;} <a class="code" href="x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5">RemminaPluginX2GoData</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html"> 159</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a> {</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5"> 160</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* <a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64"> 161</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83"> 162</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b"> 163</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24"> 164</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;} <a class="code" href="x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4">X2GoCustomUserData</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165"> 174</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165">SESSION_PROPERTIES</a> {</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a"> 175</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a> = 0,</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b"> 176</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94"> 177</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0"> 178</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172"> 179</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03"> 180</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>,</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961"> 181</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a"> 182</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>,</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817"> 183</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53"> 184</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>,</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7"> 185</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>,</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b"> 186</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>,</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0"> 187</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2"> 188</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a> <span class="comment">// Must be last. Counts all enum elements.</span></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;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">// Following str2int code was adapted from Stackoverflow:</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">// https://stackoverflow.com/questions/7021725/how-to-convert-a-string-to-integer-in-c</span></div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11"> 193</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11">_str2int_errno</a> {</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1"> 194</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a>,</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850"> 195</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8"> 196</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>,</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee"> 197</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d"> 198</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;} <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645"> 217</a></span>&#160;<a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(gint *out, gchar *s, gint base)</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; gchar *end;</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; <span class="keywordflow">if</span> (!s || !out || base &lt;= 0) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>;</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; <span class="keywordflow">if</span> (s[0] == <span class="charliteral">&#39;\0&#39;</span> || isspace(s[0])) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>;</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; errno = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; glong l = strtol(s, &amp;end, base);</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="comment">/* Both checks are needed because INT_MAX == LONG_MAX is possible. */</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (l &gt; INT_MAX || (errno == ERANGE &amp;&amp; l == LONG_MAX)) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (l &lt; INT_MIN || (errno == ERANGE &amp;&amp; l == LONG_MIN)) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (*end != <span class="charliteral">&#39;\0&#39;</span>) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>;</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; *out = l;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a>;</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;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="struct___dialog_data.html"> 267</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a></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="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a"> 269</a></span>&#160; GtkWindow *<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893"> 270</a></span>&#160; GtkDialogFlags <a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb"> 271</a></span>&#160; GtkMessageType <a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a>;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4"> 272</a></span>&#160; GtkButtonsType <a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8"> 273</a></span>&#160; gchar *<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105"> 274</a></span>&#160; gchar *<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a>;</div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd"> 275</a></span>&#160; GCallback <a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a>;</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="comment">// If the dialog needs to be custom.</span></div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f"> 278</a></span>&#160; GCallback <a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7"> 279</a></span>&#160; gpointer <a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a>;</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;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa"> 290</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</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;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = (<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</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; <span class="keywordflow">if</span> (ddata) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="comment">// Can&#39;t check type, flags or buttons</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// because they are enums and &#39;0&#39; is a valid value</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (!ddata-&gt;title || !ddata-&gt;message) {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Broken `DialogData`! Aborting…&quot;</span>));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Can&#39;t retrieve `DialogData`! Aborting…&quot;</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;`DialogData` checks passed. Now showing dialog…&quot;</span>);</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; GtkWidget* widget_gtk_dialog = NULL;</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; <span class="keywordflow">if</span> (ddata-&gt;dialog_factory_func != NULL) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Calling *custom* dialog factory function…&quot;</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; GCallback dialog_factory_func = G_CALLBACK(ddata-&gt;dialog_factory_func);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; gpointer dialog_factory_data = ddata-&gt;dialog_factory_data;</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="comment">// Calling dialog_factory_func(custom_data, dialog_factory_data);</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; widget_gtk_dialog = ((GtkWidget* (*)(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>*, gpointer))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; dialog_factory_func)(custom_data, dialog_factory_data);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; widget_gtk_dialog = gtk_message_dialog_new(ddata-&gt;parent,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; ddata-&gt;flags,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; ddata-&gt;type,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; ddata-&gt;buttons,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, ddata-&gt;title);</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; gtk_message_dialog_format_secondary_text(</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; GTK_MESSAGE_DIALOG(widget_gtk_dialog), <span class="stringliteral">&quot;%s&quot;</span>, ddata-&gt;message);</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"> 341</span>&#160; <span class="keywordflow">if</span> (!widget_gtk_dialog) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;Error! Aborting.&quot;</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (ddata-&gt;callbackfunc) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; g_signal_connect_swapped(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">&quot;response&quot;</span>,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; G_CALLBACK(ddata-&gt;callbackfunc),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; custom_data);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; g_signal_connect(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">&quot;response&quot;</span>,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; G_CALLBACK(gtk_widget_destroy),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; NULL);</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"> 356</span>&#160; gtk_widget_show_all(widget_gtk_dialog);</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; <span class="comment">// Delete ddata object and reference &#39;dialog-data&#39; in gp.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; g_object_set_data(G_OBJECT(gp), <span class="stringliteral">&quot;dialog-data&quot;</span>, NULL);</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 363</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05"> 367</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05">SESSION_CHOOSER_RESPONSE_TYPE</a> {</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f"> 368</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a> = 0,</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc"> 369</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>,</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4"> 370</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>,</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;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e"> 382</a></span>&#160;<span class="keyword">static</span> GtkWidget* <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GtkWidget* parent, <span class="keyword">const</span> gchar* name)</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; <span class="keyword">const</span> gchar* parent_name = gtk_widget_get_name((GtkWidget*) parent);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span> (g_ascii_strcasecmp(parent_name, (gchar*) name) == 0) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> parent;</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; <span class="keywordflow">if</span> (GTK_IS_BIN(parent)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; GtkWidget *child = gtk_bin_get_child(GTK_BIN(parent));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(child, name);</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;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (GTK_IS_CONTAINER(parent)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; GList *children = gtk_container_get_children(GTK_CONTAINER(parent));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">while</span> (children != NULL) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; GtkWidget *widget = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(children-&gt;data, name);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (widget != NULL) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> widget;</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; children = g_list_next(children);</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; }</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a"> 419</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a">rmplugin_x2go_session_chooser_row_activated</a>(GtkTreeView *treeview,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; GtkTreePath *path,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; GtkTreeViewColumn *column,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</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="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</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; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// dialog_data (unused)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// connect_data (unused)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; GtkWidget* dialog = GTK_WIDGET(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; gchar *session_id;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; GtkTreeModel *model = gtk_tree_view_get_model(treeview);</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; <span class="keywordflow">if</span> (gtk_tree_model_get_iter(model, &amp;iter, path)) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; gtk_tree_model_get(GTK_TREE_MODEL(model), &amp;iter,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>, &amp;session_id, -1);</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="comment">// Silent bail out.</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; SET_RESUME_SESSION(gp, session_id);</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// We use a trick here. As long as there is something other than 0</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; gtk_widget_hide(GTK_WIDGET(dialog));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 463</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6"> 471</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6">rmplugin_x2go_session_property_to_string</a>(guint session_property) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; gchar* return_char = NULL;</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; <span class="keywordflow">switch</span> (session_property) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// I think we can close one eye here regarding max line-length.</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;X Display&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Status&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Session ID&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Create date&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Suspended since&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Agent PID&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Username&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Hostname&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Cookie&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Graphic port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;SND port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;SSHFS port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Visible&quot;</span>)); <span class="keywordflow">break</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;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> return_char;</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;</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1"> 509</a></span>&#160;<span class="keyword">static</span> GtkWidget* <a class="code" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1">rmplugin_x2go_choose_session_dialog_factory</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data,</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; GList *sessions_list)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> ||</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>) {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; ));</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="keywordflow">return</span> NULL;</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"> 524</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>* ddata = (<span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</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; if (!ddata || !sessions_list || !ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t retrieve valid `DialogData` or &quot;</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="stringliteral">&quot;`sessions_list`! Aborting…&quot;</span>));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; GtkWidget *widget_gtk_dialog = NULL;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; widget_gtk_dialog = gtk_dialog_new_with_buttons(ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>, ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// TRANSLATORS: Stick to x2goclient&#39;s translation for terminate.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; _(<span class="stringliteral">&quot;_Terminate&quot;</span>),</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// TRANSLATORS: Stick to x2goclient&#39;s translation for resume.</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; _(<span class="stringliteral">&quot;_Resume&quot;</span>),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; _(<span class="stringliteral">&quot;_New&quot;</span>),</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a>,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; 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; GtkWidget *button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; GTK_DIALOG(widget_gtk_dialog),</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// TRANSLATORS: Tooltip for terminating button inside Session-Chooser-Dialog.</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s way of translating.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; gtk_widget_set_tooltip_text(button, _(<span class="stringliteral">&quot;Terminating X2Go sessions can take a moment.&quot;</span>));</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"> 552</span>&#160;<span class="preprocessor"> #define DEFAULT_DIALOG_WIDTH 720</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor"> #define DEFAULT_DIALOG_HEIGHT (DEFAULT_DIALOG_WIDTH * 9) / 16</span></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; gtk_widget_set_size_request(GTK_WIDGET(widget_gtk_dialog),</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gtk_window_set_default_size(GTK_WINDOW(widget_gtk_dialog),</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</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; gtk_window_set_resizable(GTK_WINDOW(widget_gtk_dialog), TRUE);</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; GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">//gtk_widget_show(scrolled_window);</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; GTK_DIALOG(widget_gtk_dialog))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; ), GTK_WIDGET(scrolled_window), TRUE, TRUE, 5);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; GTK_POLICY_AUTOMATIC,</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; GType types[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>];</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; <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; ++i) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// Everything is a String. (Except IS_VISIBLE flag)</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// If that changes one day, you could extent the if statement here.</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// But you would propably need a *lot* of refactoring.</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// Especially in the session parser.</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; types[i] = G_TYPE_BOOLEAN;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; types[i] = G_TYPE_STRING;</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; }</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; <span class="comment">// create tree view</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; GtkListStore *store = gtk_list_store_newv(SESSION_NUM_PROPERTIES, types);</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; GtkTreeModelFilter *filter = GTK_TREE_MODEL_FILTER(</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gtk_tree_model_filter_new(GTK_TREE_MODEL(store),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; NULL)</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; gtk_tree_model_filter_set_visible_column(filter, <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; GtkWidget *tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(filter));</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; g_object_unref (G_OBJECT (store)); <span class="comment">// tree now holds reference</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; gtk_widget_set_size_request(tree_view, -1, 300);</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; <span class="comment">// Gets name to be findable by rmplugin_x2go_find_child()</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; gtk_widget_set_name(GTK_WIDGET(tree_view), <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</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; <span class="comment">// create list view columns</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), TRUE);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW(tree_view), FALSE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree_view), TRUE);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gtk_widget_show (tree_view);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gtk_container_add (GTK_CONTAINER(scrolled_window), tree_view);</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; GtkTreeViewColumn *tree_view_col = NULL;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; GtkCellRenderer *cell_renderer = NULL;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gchar *header_title = NULL;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; ++i) {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// Do not display SESSION_DIALOG_IS_VISIBLE.</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) <span class="keywordflow">continue</span>;</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; header_title = <a class="code" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6">rmplugin_x2go_session_property_to_string</a>(i);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (!header_title) {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>), g_strdup_printf(</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; _(<span class="stringliteral">&quot;Unknown property &#39;%i&#39;&quot;</span>), i</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; header_title = g_strdup_printf(_(<span class="stringliteral">&quot;Unknown property &#39;%i&#39;&quot;</span>), i);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; tree_view_col = gtk_tree_view_column_new();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gtk_tree_view_column_set_title(tree_view_col, header_title);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; gtk_tree_view_column_set_clickable(tree_view_col, FALSE);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; gtk_tree_view_column_set_sizing (tree_view_col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gtk_tree_view_column_set_resizable(tree_view_col, TRUE);</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; cell_renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; gtk_tree_view_column_pack_start(tree_view_col, cell_renderer, TRUE);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; gtk_tree_view_column_add_attribute(tree_view_col, cell_renderer, <span class="stringliteral">&quot;text&quot;</span>, i);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), tree_view_col);</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; GList *elem = NULL;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; GtkTreeIter iter;</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">for</span> (elem = sessions_list; elem; elem = elem-&gt;next) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; gchar** <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a> = (gchar**) elem-&gt;data;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; g_assert(session != NULL);</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; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; i++) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gchar* <span class="keyword">property</span> = session[i];</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; GValue a = G_VALUE_INIT;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// Everything here is a string (except SESSION_DIALOG_IS_VISIBLE)</span></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="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; g_value_init(&amp;a, G_TYPE_BOOLEAN);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; g_assert(G_VALUE_HOLDS_BOOLEAN(&amp;a) &amp;&amp; <span class="stringliteral">&quot;GValue does not &quot;</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="stringliteral">&quot;hold a boolean!&quot;</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// Default is to show every new session.</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; g_value_set_boolean(&amp;a, TRUE);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; g_value_init(&amp;a, G_TYPE_STRING);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; g_assert(G_VALUE_HOLDS_STRING(&amp;a) &amp;&amp; <span class="stringliteral">&quot;GValue does not &quot;</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="stringliteral">&quot;hold a string!&quot;</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; g_value_set_static_string (&amp;a, property);</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; gtk_list_store_set_value(store, &amp;iter, i, &amp;a);</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;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * opt1 -&gt; dialog widget (GtkWidget*)</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = widget_gtk_dialog;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; g_signal_connect(tree_view, <span class="stringliteral">&quot;row-activated&quot;</span>,</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a">rmplugin_x2go_session_chooser_row_activated</a>),</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; custom_data);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> widget_gtk_dialog;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;}</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358"> 702</a></span>&#160;<span class="keyword">static</span> GtkTreeModelFilter* <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(GtkWidget *dialog,</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; GtkTreeView* treeview)</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">//REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; GtkTreeModel *return_model = NULL;</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="keywordflow">if</span> (!treeview &amp;&amp; dialog) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; GtkWidget *treeview_new = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (!treeview_new) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t find child GtkTreeView of &quot;</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="stringliteral">&quot;session chooser dialog.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_new));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (treeview) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; _(<span class="stringliteral">&quot;Neither the &#39;dialog&#39; nor &#39;treeview&#39; parameters are initialized! &quot;</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="stringliteral">&quot;At least one of them must be given.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">if</span> (!return_model || !GTK_TREE_MODEL_FILTER(return_model)) {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; _(<span class="stringliteral">&quot;Could not obtain \&quot;GtkTreeModelFilter*\&quot; of the session chooser dialog, &quot;</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="stringliteral">&quot;for unknown reason.&quot;</span>)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ));</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;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> GTK_TREE_MODEL_FILTER(return_model);</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;</div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3"> 753</a></span>&#160;<span class="keyword">static</span> GtkTreePath* <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(GtkWidget *dialog)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; GtkWidget *treeview = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (!treeview) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t find child GtkTreeView of session chooser dialog.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (!selection) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get currently selected row (session)!&quot;</span>)</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; ));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; NULL, GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> NULL; <span class="comment">// error message was already handled.</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; GtkTreeModel *filter_model = GTK_TREE_MODEL(filter);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; g_assert(filter_model &amp;&amp; <span class="stringliteral">&quot;Could not cast &#39;filter&#39; to a GtkTreeModel!&quot;</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; GList *selected_rows = gtk_tree_selection_get_selected_rows(selection, &amp;filter_model);</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; <span class="comment">// We only support single selection.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; gint selected_rows_num = gtk_tree_selection_count_selected_rows(selection);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (selected_rows_num != 1) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>), g_strdup_printf(</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; _(<span class="stringliteral">&quot;Exactly one session should be selectable but &#39;%i&#39; rows &quot;</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="stringliteral">&quot;(sessions) are selected.&quot;</span>),</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; selected_rows_num</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; )));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> NULL;</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">// This would be very dangerous (we didn&#39;t check for NULL) if we hadn&#39;t just</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="comment">// checked that only one row is selected.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; GtkTreePath *path = selected_rows-&gt;data;</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="comment">// Convert to be path of GtkTreeModelFilter and *not* its child GtkTreeModel.</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; path = gtk_tree_model_filter_convert_child_path_to_path(filter, path);</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; <span class="keywordflow">return</span> path;</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;</div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7"> 817</a></span>&#160;<span class="keyword">static</span> GValue <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(GtkWidget *dialog,</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; gint property_index,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; GtkTreePath *row)</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;{</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">//REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; GValue ret_value = G_VALUE_INIT;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (!row) {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; GtkTreePath *selected_row = <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(dialog);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span> (!selected_row) <span class="keywordflow">return</span> ret_value; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; row = selected_row;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(dialog, NULL);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> ret_value; <span class="comment">// error message was already handled.</span></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; GtkTreeIter iter;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; gboolean success = gtk_tree_model_get_iter(model, &amp;iter, row);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (!success) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; _(<span class="stringliteral">&quot;Failed to fill &#39;GtkTreeIter&#39;.&quot;</span>)</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;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> ret_value;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</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; GValue <span class="keyword">property</span> = G_VALUE_INIT;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; gtk_tree_model_get_value(model, &amp;iter, property_index, &amp;property);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> property;</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="l00859"></a><span class="lineno"> 859</span>&#160;<span class="comment">/*static void rmplugin_x2go_dump_session_properties(GtkTreeModel *model, GtkTreePath *path,</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="comment"> GtkTreeIter *iter, GtkWidget *dialog)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="comment">{</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="comment"> //REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="comment"> g_debug(_(&quot;Properties for session with path &#39;%s&#39;:&quot;), gtk_tree_path_to_string(path));</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="comment"> for (guint i = 0; i &lt; SESSION_NUM_PROPERTIES; i++) {</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="comment"> GValue property = G_VALUE_INIT;</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;<span class="comment"> property = rmplugin_x2go_session_chooser_get_property(dialog, i, path);</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="comment"> gchar* display_name = rmplugin_x2go_session_property_to_string(i);</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="comment"> g_assert(display_name &amp;&amp; &quot;Couldn&#39;t get display name for a property!&quot;);</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="comment"> if (i == SESSION_DIALOG_IS_VISIBLE) {</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="comment"> g_assert(G_VALUE_HOLDS_BOOLEAN(&amp;property) &amp;&amp; &quot;GValue does not &quot;</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="comment"> &quot;hold a boolean!&quot;);</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;<span class="comment"> g_debug(&quot;\t%s: &#39;%s&#39;&quot;, display_name,</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;<span class="comment"> g_value_get_boolean(&amp;property) ? &quot;TRUE&quot; : &quot;FALSE&quot;);</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="comment"> } else {</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="comment"> g_assert(G_VALUE_HOLDS_STRING(&amp;property) &amp;&amp; &quot;GValue does not &quot;</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;<span class="comment"> &quot;hold a string!&quot;);</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="comment"> g_debug(&quot;\t%s: &#39;%s&#39;&quot;, display_name, g_value_get_string(&amp;property));</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="comment">}*/</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67"> 898</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(guint argc, gchar* argv[],</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; GError** error, gchar** env)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (!argv) {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;argv&#39; is &#39;NULL&#39;.&quot;</span>)</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">return</span> NULL;</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="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">// Can&#39;t report error message back since &#39;error&#39; is NULL.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;error&#39; is &#39;NULL&#39;.&quot;</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; <span class="keywordflow">return</span> NULL;</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="keywordflow">if</span> (!env || !env[0]) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;env&#39; is either invalid or uninitialized.&quot;</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> 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; gint exit_code = 0;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; gchar *standard_out;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// Just supresses pyhoca-cli&#39;s help message when pyhoca-cli&#39;s version is too old.</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; gchar *standard_err;</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; gboolean success_ret = g_spawn_sync(NULL, argv, env, G_SPAWN_SEARCH_PATH, NULL,</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; NULL, &amp;standard_out, &amp;standard_err,</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; &amp;exit_code, error);</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; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Started PyHoca-CLI with the following arguments:&quot;</span>));</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="comment">// Print every argument except passwords. Free all arg strings.</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; argc - 1; i++) {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; gchar* curr_arg = argv[i];</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"> 946</span>&#160; <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">&quot;--password&quot;</span>) ||</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; g_str_equal(curr_arg, <span class="stringliteral">&quot;--ssh-passphrase&quot;</span>)) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; g_printf(<span class="stringliteral">&quot;XXXXXX &quot;</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; g_free(argv[++i]);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; g_free(curr_arg);</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; }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; g_printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">/* TOO VERBOSE: */</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, _(&quot;Started PyHoca-CLI with the &quot;</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"> &quot;following environment variables:&quot;));</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, g_strjoinv(&quot;\n&quot;, env));</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="comment"> */</span></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"> 967</span>&#160; <span class="keywordflow">if</span> (standard_err &amp;&amp; strlen(standard_err) &gt; 0) {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(standard_err, <span class="stringliteral">&quot;pyhoca-cli: error: a socket error &quot;</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="stringliteral">&quot;occured while establishing the connection:&quot;</span>)) {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="comment">// Log error into GUI.</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; _(<span class="stringliteral">&quot;The necessary PyHoca-CLI process has encountered a &quot;</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="stringliteral">&quot;internet connection problem.&quot;</span>)</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"> 976</span>&#160; <span class="comment">// Log error into debug window and stdout</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s:\n%s&quot;</span>, errmsg, standard_err);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; _(<span class="stringliteral">&quot;Could not start &quot;</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="stringliteral">&quot;PyHoca-CLI:\n%s&quot;</span>),</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; standard_err</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; );</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> NULL;</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">else</span> <span class="keywordflow">if</span> (!success_ret || (*error) || strlen(standard_out) &lt;= 0 || exit_code) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span> (!(*error)) {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; _(<span class="stringliteral">&quot;An unknown error occured while trying &quot;</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="stringliteral">&quot;to start PyHoca-CLI. Exit code: %i&quot;</span>),</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; exit_code);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; _(<span class="stringliteral">&quot;An unknown error occured while trying to start &quot;</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="stringliteral">&quot;PyHoca-CLI. Exit code: %i. Error: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; exit_code, (*error)-&gt;message);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</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;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> NULL;</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="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">return</span> standard_out;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;}</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="struct___connection_data.html"> 1016</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a> {</div><div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1"> 1017</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"><a class="line" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541"> 1018</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8"> 1019</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629"> 1020</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236"> 1021</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;};</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6"> 1036</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(GtkTreePath *path,</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; gboolean value,</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; GtkDialog *dialog) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!path || !dialog) {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; _(<span class="stringliteral">&quot;Neither the &#39;path&#39; nor &#39;dialog&#39; parameters are initialized.&quot;</span>)</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; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; GTK_WIDGET(dialog), NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</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; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &amp;iter, path)) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; _(<span class="stringliteral">&quot;GtkTreePath &#39;path&#39; describes a non-existing row!&quot;</span>)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; ));</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; }</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="comment">// Make session either visible or invisible.</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; gtk_list_store_set(GTK_LIST_STORE(model), &amp;iter,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>, value, -1);</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; <span class="comment">// Update row.</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &amp;iter);</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; <span class="comment">/* Get IS_VISIBLE flag of a session. */</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="comment">// GValue ret_value = G_VALUE_INIT;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="comment">// ret_value = rmplugin_x2go_session_chooser_get_property(GTK_WIDGET(dialog),</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">// SESSION_DIALOG_IS_VISIBLE,</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="comment">// path);</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="comment">// g_debug(&quot;Is visible: %s&quot;, g_value_get_boolean(&amp;ret_value) ? &quot;TRUE&quot; : &quot;FALSE&quot;);</span></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="l01081"></a><span class="lineno"> 1081</span>&#160; GtkWidget *term_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; GTK_DIALOG(dialog),</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; GtkWidget *resume_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; GTK_DIALOG(dialog),</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>);</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"> 1088</span>&#160; <span class="comment">// If no (visible) row is left to terminate disable terminate and resume buttons.</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; gint rows_amount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(filter), NULL);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">if</span> (rows_amount &lt;= 0) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; gtk_widget_set_sensitive(term_button, FALSE);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; gtk_widget_set_sensitive(resume_button, FALSE);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; gtk_widget_set_sensitive(term_button, TRUE);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; gtk_widget_set_sensitive(resume_button, TRUE);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; }</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="comment">// Success, yay!</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;}</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb"> 1102</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(<span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a> *connect_data) {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="comment">/* Check connect_data. */</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) &lt;= 0 ||</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) &lt;= 0)</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; ));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</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; <span class="keywordflow">if</span> (!connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> &amp;&amp; (!connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> ||</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) &lt;= 0)) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; ));</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l01145"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9"> 1145</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9">rmplugin_x2go_pyhoca_terminate_session</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;{</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> ||</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> ||</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>) {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not fully initialized!&quot;</span>)</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; ));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="comment">// Extract data passed by X2GoCustomUserData *custom_data.</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="comment">//struct _DialogData *ddata = (struct _DialogData*) custom_data-&gt;dialog_data;</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a> *connect_data = (<span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; GtkTreePath* selected_row = (GtkTreePath*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; GtkDialog *dialog = GTK_DIALOG(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> = NULL;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; gchar *<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> = NULL;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> = NULL;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> = NULL;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a> = NULL;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; gboolean valid = <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(connect_data);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; ssh_privatekey = connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; ssh_passphrase = connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</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; }</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; host = connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; username = connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</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; GValue value = <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; selected_row);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&amp;value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">const</span> gchar *session_id = g_value_get_string(&amp;value);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--terminate $SESSION_ID&#39; option.</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="comment">// (and of course auth related stuff)</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; gchar *argv[50];</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; gint argc = 0;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</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; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, host);</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"> 1206</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 1218</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, password);</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"> 1230</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; }</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; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;TERMINATE&quot;</span>)) {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--terminate&quot;</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, session_id);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;TERMINATE&quot;</span>));</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 1242</span>&#160;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</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> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</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; }</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</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;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; GError* error = NULL;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv, &amp;error, envp);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; gchar *err_msg = g_strdup_printf(</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; _(<span class="stringliteral">&quot;An error occured while trying to terminate X2Go session &#39;%s&#39;:\n%s&quot;</span>),</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; session_id,</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; error-&gt;message</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, err_msg);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *err_ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(dialog)));</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;An error occured.&quot;</span>);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = err_msg;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</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">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = err_ddata;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a> = NULL;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="comment">// Too verbose:</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="comment">// GtkTreeModel *model = gtk_tree_model_filter_get_model(</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="comment">// GTK_TREE_MODEL_FILTER(filter));</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="comment">// gtk_tree_model_foreach(GTK_TREE_MODEL(model), (GtkTreeModelForeachFunc)</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="comment">// rmplugin_x2go_dump_session_properties, dialog);</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="comment">// Set row visible again since we couldn&#39;t terminate the session.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(selected_row, TRUE,</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; dialog)) {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; }</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;}</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;</div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479"> 1339</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479">rmplugin_x2go_session_chooser_callback</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>* custom_data,</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; gint response_id,</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; GtkDialog *<span class="keyword">self</span>)</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;{</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> ||</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>) {</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ));</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="comment">// Don&#39;t need to run other stuff, if the user just wants a new session.</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="comment">// Also it can happen, that no session is there anymore which can be selected!</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; if (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a>) {</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;The user explicitly requested a new session. &quot;</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="stringliteral">&quot;Creating a new session…&quot;</span>);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; SET_RESUME_SESSION(gp, NULL);</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="comment">// We use a trick here. As long as there is something other</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// than 0 stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="comment">// This assumes that there are sessions which can be selected!</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; GValue value = <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; GTK_WIDGET(<span class="keyword">self</span>),</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; NULL <span class="comment">// Let the function search for the selected row.</span></div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; );</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&amp;value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; gchar *session_id = (gchar*) g_value_get_string(&amp;value);</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="keywordflow">if</span> (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>) {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) {</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get session ID from session chooser dialog.&quot;</span>)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; );</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; _(<span class="stringliteral">&quot;Resuming session: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; session_id</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="keywordflow">else</span> <span class="keywordflow">if</span> (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>) {</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) {</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get session ID from session chooser dialog.&quot;</span>)</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; );</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; _(<span class="stringliteral">&quot;Terminating session: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; session_id</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; ));</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"> 1416</span>&#160; GtkTreePath *path = <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">if</span> (!path) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="comment">// Actually set row invisible.</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(path, FALSE, <span class="keyword">self</span>)) {</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="comment"> * connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="comment"> * opt1 -&gt; selected row (GtkTreePath*)</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment"> * opt2 -&gt; session selection dialog (GtkDialog*)</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = path;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a> = <span class="keyword">self</span>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="comment">// Actually start pyhoca-cli process with --terminate $session_id.</span></div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; g_thread_new(<span class="stringliteral">&quot;terminate-session-thread&quot;</span>,</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; (GThreadFunc) <a class="code" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9">rmplugin_x2go_pyhoca_terminate_session</a>,</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; custom_data);</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"> 1443</span>&#160; <span class="comment">// Dialog should stay open.</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;User clicked dialog away. &quot;</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="stringliteral">&quot;Creating a new session then.&quot;</span>);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; }</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="comment">// We use a trick here. As long as there is something other</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="comment">// than 0 stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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="preprocessor">#define RMPLUGIN_X2GO_FEATURE_GTKSOCKET 1</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;<span class="comment">/* Forward declaration */</span></div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68"> 1464</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> <a class="code" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68">rmplugin_x2go</a>;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">/* When more than one NX sessions is connecting in progress, we need this mutex and array</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment"> * to prevent them from stealing the same window ID.</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01469"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2"> 1469</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>;</div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9"> 1470</a></span>&#160;<span class="keyword">static</span> GArray *<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="comment">/* ------------- Support for execution on main thread of GTK functions ------------- */</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;<span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;{</div><div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc"> 1475</a></span>&#160; <span class="keyword">enum</span> { FUNC_GTK_SOCKET_ADD_ID } func;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div><div class="line"><a name="l01477"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4"> 1477</a></span>&#160; GtkSocket* <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>;</div><div class="line"><a name="l01478"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8"> 1478</a></span>&#160; Window <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>;</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">/* Mutex for thread synchronization */</span></div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; pthread_mutex_t mu;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="comment">/* Flag to catch cancellations */</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; gboolean cancelled;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;};</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1"> 1486</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1">onMainThread_cb</a>(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">if</span> (!d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a>) {</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">switch</span> (d-&gt;<a class="code" href="structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38">func</a>) {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">case</span> FUNC_GTK_SOCKET_ADD_ID:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; gtk_socket_add_id(d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="comment">/* thread has been cancelled, so we must free d memory here */</span></div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; g_free(d);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;}</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49"> 1504</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49">onMainThread_cleanup_handler</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d = data;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a> = TRUE;</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;</div><div class="line"><a name="l01511"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53"> 1511</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">onMainThread_schedule_callback_and_wait</a>(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a> = FALSE;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; pthread_cleanup_push(<a class="code" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49">onMainThread_cleanup_handler</a>, d);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>, NULL);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; gdk_threads_add_idle((GSourceFunc)<a class="code" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1">onMainThread_cb</a>, (gpointer) d);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; pthread_mutex_lock(&amp;d-&gt;mu);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; pthread_cleanup_pop(0);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; pthread_mutex_unlock(&amp;d-&gt;mu);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; pthread_mutex_destroy(&amp;d-&gt;mu);</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;</div><div class="line"><a name="l01527"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43"> 1527</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GtkSocket* <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, Window <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>)</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;{</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; d = g_new0(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>, 1);</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38">func</a> = <a class="code" href="structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc">FUNC_GTK_SOCKET_ADD_ID</a>;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a> = <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a> = <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <a class="code" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">onMainThread_schedule_callback_and_wait</a>(d);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; g_free(d);</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">/* /-/-/-/-/-/-/ Support for execution on main thread of GTK functions /-/-/-/-/-/-/ */</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;</div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d"> 1543</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a> (Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>)</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;{</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; gint i;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; gboolean already_seen = FALSE;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; pthread_mutex_lock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>-&gt;len; i++) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">if</span> (g_array_index(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, Window, i) == window_id) {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; already_seen = TRUE;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Window of X2Go Agent with ID [0x%lx] seen already.&quot;</span>,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; window_id);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; }</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (already_seen) {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; g_array_remove_index_fast(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, i);</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Forgetting about window of X2Go Agent with ID [0x%lx]…&quot;</span>,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; window_id);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; }</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; pthread_mutex_unlock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;}</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a"> 1572</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;{</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; gchar *server;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; gint port;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; 22,</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; &amp;server,</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; &amp;port);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Disconnected from %s:%d via X2Go&quot;</span>), server, port);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; g_free(server), server = NULL;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordflow">if</span> (gpdata == NULL) {</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Exiting since gpdata is already &#39;NULL&#39;…&quot;</span>);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; }</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; pthread_cancel(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) pthread_join(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>, NULL);</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;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>) {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a>(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; }</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>) {</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; kill(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>, SIGTERM);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; g_spawn_close_pid(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> = 0;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; }</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>) {</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; XSetErrorHandler(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; XCloseDisplay(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; }</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; g_object_steal_data(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f">protocol_plugin_signal_connection_closed</a>(gp);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;}</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div><div class="line"><a name="l01621"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321"> 1621</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;{</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a">disconnected</a>) {</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing since the plugin is already disconnected.&quot;</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; }</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>(gp);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="comment">// Try again.</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</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;</div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee"> 1639</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee">rmplugin_x2go_pyhoca_cli_exited</a>(GPid pid,</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; gint status,</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;{</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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"> 1645</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">if</span> (!gpdata) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing as the disconnection &quot;</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="stringliteral">&quot;has already been handled.&quot;</span>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> &lt;= 0) {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing since pyhoca-cli was expected to stop.&quot;</span>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <span class="keywordflow">return</span>;</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"> 1657</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;PyHoca-CLI exited unexpectedly. &quot;</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="stringliteral">&quot;This connection will now be closed.&quot;</span>));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;An error occured.&quot;</span>);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = _(<span class="stringliteral">&quot;The necessary child process &#39;pyhoca-cli&#39; stopped unexpectedly.\n&quot;</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="stringliteral">&quot;Please check your profile settings and PyHoca-CLI&#39;s output for &quot;</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="stringliteral">&quot;possible errors. Also ensure the remote server is &quot;</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="stringliteral">&quot;reachable and you&#39;re using the right credentials.&quot;</span>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</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; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="comment">// 1 Second. Give `Dialog` chance to open.</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; usleep(1000 * 1000);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(gp);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;}</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;</div><div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11"> 1700</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11">rmplugin_x2go_save_credentials</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>* remminafile,</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; gchar* s_username, gchar* s_password,</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; gchar* errmsg)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;{</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="comment">// User has requested to save credentials. We put all the new credentials</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="comment">// into remminafile-&gt;settings. They will be saved later, on successful</span></div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="comment">// connection, by rcw.c</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keywordflow">if</span> (s_password &amp;&amp; s_username) {</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(s_username, <span class="stringliteral">&quot;&quot;</span>) == 0) {</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Can&#39;t save empty username!&quot;</span>), 512);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="comment">//REMMINA_PLUGIN_CRITICAL(&quot;%s&quot;, errmsg); // No need.</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="comment">// We allow the possibility to set an empty password because a X2Go</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="comment">// session can be still made using keyfiles or similar.</span></div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>,</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; s_password);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>,</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; s_username);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; g_strlcpy(errmsg, g_strdup_printf(</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; _(<span class="stringliteral">&quot;Could not save new credentials.&quot;</span>)</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; ), 512);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;An error occured while trying to save &quot;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="stringliteral">&quot;new credentials: &#39;s_password&#39; or &quot;</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="stringliteral">&quot;&#39;s_username&#39; strings were not set.&quot;</span>));</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; }</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;}</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9"> 1744</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar *errmsg,</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; gchar **passphrase)</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;{</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; g_assert(errmsg != NULL);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; g_assert(gp != NULL);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> ((*passphrase) == NULL) {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="comment">// Just setting NULL password to empty password.</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; (*passphrase) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; }</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; gint ret = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; gp, 0, _(<span class="stringliteral">&quot;Enter password to unlock the SSH key:&quot;</span>),</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; NULL, *passphrase, NULL, NULL</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; );</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; gchar *s_passphrase = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="keywordflow">if</span> (s_passphrase) {</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; (*passphrase) = g_strdup(s_passphrase);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; g_free(s_passphrase);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Password input cancelled. Aborting…&quot;</span>), 512);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;}</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;</div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4"> 1786</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar* errmsg,</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; gchar** default_username, gchar** default_password)</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;{</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; g_assert(errmsg != NULL);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; g_assert(gp != NULL);</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; g_assert(default_username != NULL);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; g_assert(default_password != NULL);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; <span class="comment">// default_username is probably NULL because the user didn&#39;t configure any</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; <span class="comment">// username in the profile settings.</span></div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keywordflow">if</span> ((*default_username) == NULL) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; gchar* l_errmsg = g_strdup_printf(</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; _(<span class="stringliteral">&quot;Tip: Check the &#39;Save password&#39; checkbox or manually input your &quot;</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="stringliteral">&quot;X2Go username and password in the profile settings to store &quot;</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="stringliteral">&quot;them for faster logins.&quot;</span>)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; );</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, l_errmsg);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; (*default_username) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; }</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// default_password is probably NULL because something did go wrong at the</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="comment">// secret-plugin. For example: The user didn&#39;t input a password for keyring or</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="comment">// the user simply didn&#39;t configure a password in the profile settings.</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">if</span> ((*default_password) == NULL) {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; (*default_password) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; gchar *s_username, *s_password;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; gint ret;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; gboolean save;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; gboolean disable_password_storing;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; disable_password_storing = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; );</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; ret = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; gp, (disable_password_storing ? 0 :</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a> |</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>),</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; _(<span class="stringliteral">&quot;Enter X2Go credentials&quot;</span>),</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; (*default_username), (*default_password), NULL, NULL</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; );</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; s_username = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac892dd297fae87868752a1f86e07937d">protocol_plugin_init_get_username</a>(gp);</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; s_password = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="keywordflow">if</span> (rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp))</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; remminafile, <span class="stringliteral">&quot;password&quot;</span>, s_password</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; );</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="comment">// Should be renamed to protocol_plugin_init_get_savecredentials()?!</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; save = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11">rmplugin_x2go_save_credentials</a>(remminafile, s_username,</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; s_password, errmsg)) {</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; }</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; }</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; <span class="keywordflow">if</span> (s_username) {</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; (*default_username) = g_strdup(s_username);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; g_free(s_username);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">if</span> (s_password) {</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; (*default_password) = g_strdup(s_password);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; g_free(s_password);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; }</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Authentication cancelled. Aborting…&quot;</span>), 512);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; }</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850"> 1878</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850">rmplugin_x2go_get_pyhoca_sessions</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp, GError **error,</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;{</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a>* gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; gchar *host = NULL;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; gchar *username = NULL;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; gchar *password = NULL;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; gchar *ssh_privatekey = NULL;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; gboolean valid = <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(connect_data);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; ssh_privatekey = connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>) {</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; ssh_passphrase = connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; }</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; }</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; host = connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; username = connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; }</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--list-sessions&#39; option.</span></div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; gchar *argv[50];</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; gint argc = 0;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--list-sessions&quot;</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, host);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; }</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, password);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; }</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; }</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; <span class="comment">// No need to catch feature-not-available error.</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; <span class="comment">// `--quiet` is not that important.</span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;QUIET&quot;</span>)) {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--quiet&quot;</span>);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; }</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="keywordflow">if</span> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; }</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; }</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; }</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>));</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <span class="comment">//#ifndef GLIB_AVAILABLE_IN_2_68</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; gchar* envp_splitted = g_strjoinv(<span class="stringliteral">&quot;;&quot;</span>, envp);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; envp_splitted = g_strconcat(envp_splitted, <span class="stringliteral">&quot;;LANG=C&quot;</span>, (<span class="keywordtype">void</span>*) NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; envp = g_strsplit(envp_splitted, <span class="stringliteral">&quot;;&quot;</span>, 0);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;<span class="comment"> * #else</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;<span class="comment"> * // Only available after glib version 2.68.</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;<span class="comment"> * // TODO: FIXME: NOT TESTED!</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;<span class="comment"> * GStrvBuilder* builder = g_strv_builder_new();</span></div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;<span class="comment"> * g_strv_builder_add(builder, &quot;LANG=C&quot;);</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;<span class="comment"> * GStrv envp = g_strv_builder_end(builder);</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;<span class="comment"> * #endif</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; gchar* std_out = <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv, error, envp);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordflow">if</span> (!std_out || *error) {</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <span class="comment">// If no error is set but std_out is NULL</span></div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; g_assert((*error) != NULL);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordflow">return</span> std_out;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;}</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;</div><div class="line"><a name="l02026"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604"> 2026</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604">rmplugin_x2go_parse_pyhoca_sessions</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp,</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; GError **error,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;{</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; gchar *pyhoca_output = NULL;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; pyhoca_output = <a class="code" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850">rmplugin_x2go_get_pyhoca_sessions</a>(gp, error, connect_data);</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (!pyhoca_output || *error) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="comment">// If no error is set but pyhoca_output is NULL</span></div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; g_assert((*error) != NULL);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; gchar **lines_list = g_strsplit(pyhoca_output, <span class="stringliteral">&quot;\n&quot;</span>, -1);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="comment">// Assume at least two lines of output.</span></div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordflow">if</span> (lines_list == NULL || lines_list[0] == NULL || lines_list[1] == NULL) {</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t parse the output of PyHoca-CLI&#39;s &quot;</span></div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; <span class="stringliteral">&quot;--list-sessions option. Creating a new &quot;</span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="stringliteral">&quot;session now.&quot;</span>));</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; gboolean found_session = FALSE;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; GList* sessions = NULL;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; gchar** <a class="code" href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a> = NULL;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <span class="keywordflow">for</span> (guint i = 0; lines_list[i] != NULL; i++) {</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; gchar* current_line = lines_list[i];</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// TOO VERBOSE:</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="comment">//REMMINA_PLUGIN_DEBUG(&quot;pyhoca-cli: %s&quot;, current_line);</span></div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="comment">// Hardcoded string &quot;Session Name: &quot; comes from python-x2go.</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="keywordflow">if</span> (!g_str_has_prefix(current_line, <span class="stringliteral">&quot;Session Name: &quot;</span>) &amp;&amp; !found_session) {</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">// Doesn&#39;t begin with &quot;Session Name: &quot; and</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="comment">// the current line doesn&#39;t come after that either. Skipping.</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; }</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;Session Name: &quot;</span>)) {</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; gchar* session_id = NULL;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; gchar** line_list = g_strsplit(current_line, <span class="stringliteral">&quot;: &quot;</span>, 0);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; line_list[0] == NULL ||</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; line_list[1] == NULL ||</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; strlen(line_list[0]) &lt;= 0 ||</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; strlen(line_list[1]) &lt;= 0)</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; {</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; }</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; session = malloc(<span class="keyword">sizeof</span>(gchar*) * (<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>+1));</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <span class="keywordflow">if</span> (!session) {</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t allocate &quot;</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; <span class="stringliteral">&quot;enough memory!&quot;</span>));</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; }</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>] = NULL;</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; sessions = g_list_append(sessions, session);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; session_id = line_list[1];</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>] = session_id;</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; _(<span class="stringliteral">&quot;Found already existing X2Go session with ID: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>])</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; );</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; found_session = TRUE;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; }</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keywordflow">if</span> (!found_session) {</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; }</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(current_line, <span class="stringliteral">&quot;-------------&quot;</span>) == 0) {</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; gchar* value = NULL;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; gchar** line_list = g_strsplit(current_line, <span class="stringliteral">&quot;: &quot;</span>, 0);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; line_list[0] == NULL ||</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; line_list[1] == NULL ||</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; strlen(line_list[0]) &lt;= 0 ||</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; strlen(line_list[1]) &lt;= 0)</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; {</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="comment">// Probably the empty line at the end of every session.</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; }</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; value = line_list[1];</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;cookie: &quot;</span>)) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;cookie:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>] = value;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;agent PID: &quot;</span>)) {</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;agent PID:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>] = value;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;display: &quot;</span>)) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;display:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>] = value;</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;status: &quot;</span>)) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;S&quot;</span>) == 0) {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; value = _(<span class="stringliteral">&quot;Suspended&quot;</span>);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;R&quot;</span>) == 0) {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; value = _(<span class="stringliteral">&quot;Running&quot;</span>);</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;T&quot;</span>) == 0) {</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; value = _(<span class="stringliteral">&quot;Terminated&quot;</span>);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; }</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;status:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>] = value;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;graphic port: &quot;</span>)) {</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;graphic port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>] = value;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;snd port: &quot;</span>)) {</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;snd port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>] = value;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;sshfs port: &quot;</span>)) {</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;sshfs port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>] = value;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;username: &quot;</span>)) {</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;username:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>] = value;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;hostname: &quot;</span>)) {</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;hostname:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>] = value;</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;create date: &quot;</span>)) {</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;create date:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>] = value;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;suspended since: &quot;</span>)) {</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;suspended since:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>] = value;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Not supported:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <span class="keywordflow">if</span> (!sessions) {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; g_set_error(error, 1, 1,</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Could not find any sessions on remote machine. Creating a new &quot;</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="stringliteral">&quot;session now.&quot;</span>)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; );</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <span class="comment">// returning NULL with `error` set.</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; }</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <span class="keywordflow">return</span> sessions;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;}</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;</div><div class="line"><a name="l02198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63"> 2198</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GError **error,</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;{</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> ||</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) &lt;= 0 ||</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) &lt;= 0)</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="comment">// Allow empty passwords. Maybe the user wants to connect via public key?</span></div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; {</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; ));</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; }</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; GList *sessions_list = NULL;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; sessions_list = <a class="code" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604">rmplugin_x2go_parse_pyhoca_sessions</a>(gp, error, connect_data);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; <span class="keywordflow">if</span> (!sessions_list || *error) {</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; <span class="comment">// If no error is set but sessions_list is NULL</span></div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; g_assert(*error != NULL);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; }</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="comment">// Prep new DialogData struct.</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <span class="comment">//ddata-&gt;type = GTK_MESSAGE_QUESTION;</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; <span class="comment">//ddata-&gt;buttons = GTK_BUTTONS_OK; // Doesn&#39;t get used in our custom factory.</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;Choose a session to resume:&quot;</span>);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160; <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="comment">// gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="comment">// dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <span class="comment">// connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479">rmplugin_x2go_session_chooser_callback</a>);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="comment">// gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <span class="comment">// dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; <span class="comment">// connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = sessions_list;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1">rmplugin_x2go_choose_session_dialog_factory</a>);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = connect_data;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; <span class="comment">// Open dialog here. Dialog rmplugin_x2go_session_chooser_callback (callbackfunc)</span></div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="comment">// should set SET_RESUME_SESSION.</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; guint counter = 0;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; <span class="keywordflow">while</span> (!IS_SESSION_SELECTED(gp)) {</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="comment">// 0.5 Seconds. Give dialog chance to open.</span></div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; usleep(500 * 1000);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; <span class="comment">// Every 5 seconds</span></div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; <span class="keywordflow">if</span> (counter % 10 == 0 || counter == 0) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for user to select a session…&quot;</span>));</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; }</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; counter++;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; }</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; gchar* chosen_resume_session = GET_RESUME_SESSION(gp);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; <span class="keywordflow">if</span> (!chosen_resume_session || strlen(chosen_resume_session) &lt;= 0) {</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;No session was selected. Creating a new one.&quot;</span>));</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; }</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <span class="keywordflow">return</span> chosen_resume_session;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;}</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085"> 2291</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085">rmplugin_x2go_exec_x2go</a>(gchar *host,</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; gint sshport,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; gchar *username,</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; gchar *password,</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160; gchar *command,</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; gchar *kbdlayout,</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; gchar *kbdtype,</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; gchar *audio,</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; gchar *clipboard,</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; gint dpi,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; gchar *resolution,</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; gchar *ssh_privatekey,</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp,</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; gchar *errmsg)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;{</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; gchar *argv[50];</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; gint argc = 0;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <span class="comment">// We don&#39;t want to save any SSH passphrases on hard drive!</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <span class="comment">// Thats why we will always ask if needed.</span></div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keywordflow">if</span> (!username || strlen(username) &lt;= 0) {</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; <span class="comment">// Sets `username` and `password`.</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(gp, errmsg, &amp;username, &amp;password)) {</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; }</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <span class="comment">// Password can be *empty* but not NULL.</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; password = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; }</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; strlen(ssh_privatekey) &gt; 0) {</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; <span class="comment">// FIXME: Check if file exists and is legit private key.</span></div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="comment">// See: https://security.stackexchange.com/a/245767</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; <span class="comment">// Get ssh_privatekey now via dialog.</span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(gp, errmsg, &amp;ssh_passphrase)) {</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; }</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; }</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>, 1);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> = <a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> = <a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> = <a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> = <a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a> = <a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; GError *session_error = NULL;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; gchar* resume_session_id = <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(gp, &amp;session_error,</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; connect_data);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="keywordflow">if</span> (!resume_session_id || session_error || strlen(resume_session_id) &lt;= 0) {</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; <span class="comment">// If no error is set but session_id is NULL</span></div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; g_assert(session_error != NULL);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; _(<span class="stringliteral">&quot;A non-critical error happened: %s&quot;</span>),</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; session_error-&gt;message</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; ));</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; _(<span class="stringliteral">&quot;User chose to resume session with ID: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; resume_session_id</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; ));</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; }</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; argc = 0;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, host);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>)) {</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-p&quot;</span>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%d&quot;</span>, sshport);</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>));</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; }</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; <span class="keywordflow">if</span> (resume_session_id &amp;&amp; strlen(resume_session_id) &gt; 0) {</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s way of translating.</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; _(<span class="stringliteral">&quot;Resuming session &#39;%s&#39;…&quot;</span>),</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; resume_session_id</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; ));</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;RESUME&quot;</span>)) {</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--resume&quot;</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, resume_session_id);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;RESUME&quot;</span>));</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; }</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; }</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="comment">// Deprecated. The user either wants to continue a</span></div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; <span class="comment">// session or just not. No inbetween.</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; <span class="comment">// if (!resume_session_id) {</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <span class="comment">// if (FEATURE_AVAILABLE(gpdata, &quot;TRY_RESUME&quot;)) {</span></div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="comment">// argv[argc++] = g_strdup(&quot;--try-resume&quot;);</span></div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="comment">// } else {</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="comment">// REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, FEATURE_NOT_AVAIL_STR(&quot;TRY_RESUME&quot;));</span></div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <span class="keywordflow">if</span> (username){</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; }</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; }</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, password);</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; }</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; }</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;COMMAND&quot;</span>)) {</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-c&quot;</span>);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; <span class="comment">// FIXME: pyhoca-cli is picky about multiple quotes around</span></div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; <span class="comment">// the command string...</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="comment">// argv[argc++] = g_strdup_printf (&quot;%s&quot;, g_shell_quote(command));</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; argv[argc++] = g_strdup(command);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;COMMAND&quot;</span>));</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>)) {</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">if</span> (kbdlayout) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-layout&quot;</span>);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, kbdlayout);</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-layout&quot;</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;auto&quot;</span>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; }</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>));</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;KBD_TYPE&quot;</span>)) {</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <span class="keywordflow">if</span> (kbdtype) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-type&quot;</span>);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, kbdtype);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-type&quot;</span>);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;auto&quot;</span>);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;KBD_TYPE&quot;</span>));</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;GEOMETRY&quot;</span>)) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <span class="keywordflow">if</span> (!resolution)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; resolution = <span class="stringliteral">&quot;800x600&quot;</span>;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-g&quot;</span>);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, resolution);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;GEOMETRY&quot;</span>));</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>)) {</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--terminate-on-ctrl-c&quot;</span>);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; }</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SOUND&quot;</span>)) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; <span class="keywordflow">if</span> (audio) {</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--sound&quot;</span>);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, audio);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--sound&quot;</span>);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;none&quot;</span>);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SOUND&quot;</span>));</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; }</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;CLIPBOARD_MODE&quot;</span>)) {</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; <span class="keywordflow">if</span> (clipboard) {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--clipboard-mode&quot;</span>);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, clipboard);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;CLIPBOARD_MODE&quot;</span>));</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; }</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;DPI&quot;</span>)) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; <span class="comment">// Even though we validate the users input in the Remmina Editor,</span></div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; <span class="comment">// manipulating profile files is still very possible…</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="comment">// Values are extracted from pyhoca-cli.</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; <span class="keywordflow">if</span> (dpi &lt; 20 || dpi &gt; 400) {</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;DPI setting is out of bounds. Please adjust &quot;</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <span class="stringliteral">&quot;it in profile settings.&quot;</span>), 512);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; <span class="comment">// No need, start_session() will handle output.</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; <span class="comment">//REMMINA_PLUGIN_CRITICAL(&quot;%s&quot;, errmsg);</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; }</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--dpi&quot;</span>);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, dpi);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;DPI&quot;</span>));</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; }</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keywordflow">if</span> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; }</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; }</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>));</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; }</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; GError *error = NULL;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; gchar **envp = g_get_environ();</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; gboolean success = g_spawn_async_with_pipes (NULL, argv, envp,</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; (G_SPAWN_DO_NOT_REAP_CHILD |</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; G_SPAWN_SEARCH_PATH), NULL,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; NULL, &amp;gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>,</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; NULL, NULL, NULL, &amp;error);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Started PyHoca-CLI with the following arguments:&quot;</span>));</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; <span class="comment">// Print every argument except passwords. Free all arg strings.</span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; argc - 1; i++) {</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; gchar* curr_arg = argv[i];</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">&quot;--password&quot;</span>) ||</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; g_str_equal(curr_arg, <span class="stringliteral">&quot;--ssh-passphrase&quot;</span>)) {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; g_printf(<span class="stringliteral">&quot;XXXXXX &quot;</span>);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; g_free(argv[++i]);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; }</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; g_printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="keywordflow">if</span> (!success || error) {</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="comment">// TRANSLATORS: Meta-error. Shouldn&#39;t be visible.</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; <span class="keywordflow">if</span> (!error) error = g_error_new(0, 0, _(<span class="stringliteral">&quot;Internal error.&quot;</span>));</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; gchar *error_title = _(<span class="stringliteral">&quot;An error occured while &quot;</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <span class="stringliteral">&quot;starting an X2Go session…&quot;</span>);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>* ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;Could not start X2Go session.&quot;</span>);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not start PyHoca-CLI (%i): &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; error-&gt;code,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; error-&gt;message);</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; g_strlcpy(errmsg, error_title, 512);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="comment">// No need to output here. rmplugin_x2go_start_session will do this.</span></div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; g_error_free(error);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; <span class="comment">// Prevent a race condition where pyhoca-cli is not</span></div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <span class="comment">// started yet (pidx2go == 0) but a watcher is added.</span></div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; <span class="comment">// 0.001 seconds.</span></div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; ts.tv_nsec = 1 * 1000 * 1000;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; ts.tv_sec = 0;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; <span class="keywordflow">while</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> == 0) {</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Waiting for PyHoca-CLI to start…&quot;</span>);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; };</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Watching child &#39;pyhoca-cli&#39; process now…&quot;</span>);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; g_child_watch_add(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>,</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; (GChildWatchFunc) <a class="code" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee">rmplugin_x2go_pyhoca_cli_exited</a>,</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; gp);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;}</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div><div class="line"><a name="l02640"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060"> 2640</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>()</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;{</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;<span class="preprocessor"> #define AMOUNT_FEATURES 43</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; gchar* features[AMOUNT_FEATURES] = {</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; <span class="stringliteral">&quot;ADD_TO_KNOWN_HOSTS&quot;</span>, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>, <span class="stringliteral">&quot;BROKER_PASSWORD&quot;</span>, <span class="stringliteral">&quot;BROKER_URL&quot;</span>,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; <span class="stringliteral">&quot;CLEAN_SESSIONS&quot;</span>, <span class="stringliteral">&quot;COMMAND&quot;</span>, <span class="stringliteral">&quot;DEBUG&quot;</span>, <span class="stringliteral">&quot;FORCE_PASSWORD&quot;</span>, <span class="stringliteral">&quot;FORWARD_SSHAGENT&quot;</span>,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; <span class="stringliteral">&quot;GEOMETRY&quot;</span>, <span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>, <span class="stringliteral">&quot;KBD_TYPE&quot;</span>, <span class="stringliteral">&quot;LIBDEBUG&quot;</span>, <span class="stringliteral">&quot;LIBDEBUG_SFTPXFER&quot;</span>, <span class="stringliteral">&quot;LINK&quot;</span>,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; <span class="stringliteral">&quot;LIST_CLIENT_FEATURES&quot;</span>, <span class="stringliteral">&quot;LIST_DESKTOPS&quot;</span>, <span class="stringliteral">&quot;LIST_SESSIONS&quot;</span>, <span class="stringliteral">&quot;NEW&quot;</span>, <span class="stringliteral">&quot;PACK&quot;</span>,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="stringliteral">&quot;PASSWORD&quot;</span>, <span class="stringliteral">&quot;PDFVIEW_CMD&quot;</span>, <span class="stringliteral">&quot;PRINTER&quot;</span>, <span class="stringliteral">&quot;PRINTING&quot;</span>, <span class="stringliteral">&quot;PRINT_ACTION&quot;</span>, <span class="stringliteral">&quot;PRINT_CMD&quot;</span>,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="stringliteral">&quot;QUIET&quot;</span>, <span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>, <span class="stringliteral">&quot;RESUME&quot;</span>, <span class="stringliteral">&quot;SAVE_TO_FOLDER&quot;</span>, <span class="stringliteral">&quot;SESSION_PROFILE&quot;</span>,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <span class="stringliteral">&quot;SESSION_TYPE&quot;</span>, <span class="stringliteral">&quot;SHARE_DESKTOP&quot;</span>, <span class="stringliteral">&quot;SHARE_LOCAL_FOLDERS&quot;</span>, <span class="stringliteral">&quot;SHARE_MODE&quot;</span>, <span class="stringliteral">&quot;SOUND&quot;</span>,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>, <span class="stringliteral">&quot;SUSPEND&quot;</span>, <span class="stringliteral">&quot;TERMINATE&quot;</span>, <span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>, <span class="stringliteral">&quot;TRY_RESUME&quot;</span>,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <span class="stringliteral">&quot;USERNAME&quot;</span>, <span class="stringliteral">&quot;XINERAMA&quot;</span></div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; };</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; GList *features_list = NULL;</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; AMOUNT_FEATURES; i++) {</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; features_list = g_list_append(features_list, features[i]);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; }</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; <span class="keywordflow">return</span> features_list;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;}</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;</div><div class="line"><a name="l02668"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d"> 2668</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d">rmplugin_x2go_populate_available_features_list</a>()</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;{</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; GList* returning_glist = NULL;</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--list-cmdline-features&#39; option</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <span class="comment">// and depending on the exit code and standard output we will determine if some</span></div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; <span class="comment">// features are available or not.</span></div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; gchar* argv[50];</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; gint argc = 0;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--list-cmdline-features&quot;</span>);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; GError* error = NULL; <span class="comment">// Won&#39;t be actually used.</span></div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <span class="comment">// Querying pyhoca-cli&#39;s command line features.</span></div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; gchar* features_string = <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv,</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; &amp;error, envp);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; <span class="keywordflow">if</span> (!features_string || error) {</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; <span class="comment">// We added the &#39;--list-cmdline-features&#39; on commit 17d1be1319ba6 of</span></div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <span class="comment">// pyhoca-cli. In order to protect setups which don&#39;t have the newest</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <span class="comment">// version of pyhoca-cli available yet we artificially create a list</span></div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; <span class="comment">// of an old limited set of features.</span></div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get PyHoca-CLI&#39;s command-line features. This &quot;</span></div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; <span class="stringliteral">&quot;indicates it is either too old, or not installed. &quot;</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; <span class="stringliteral">&quot;An old limited set of features will be used for now.&quot;</span>));</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>();</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; gchar **features_list = g_strsplit(features_string, <span class="stringliteral">&quot;\n&quot;</span>, 0);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <span class="keywordflow">if</span> (features_list == NULL) {</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Could not parse PyHoca-CLI&#39;s command-line &quot;</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="stringliteral">&quot;features. Using a limited feature-set for now.&quot;</span>);</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>();</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; }</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Retrieved the following PyHoca-CLI &quot;</span></div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <span class="stringliteral">&quot;command-line features:&quot;</span>));</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; features_list[k] != NULL; k++) {</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; <span class="comment">// Filter out empty strings</span></div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="keywordflow">if</span> (strlen(features_list[k]) &lt;= 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; g_strdup_printf(_(<span class="stringliteral">&quot;Available feature[%i]: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; k+1, features_list[k]));</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; returning_glist = g_list_append(returning_glist, features_list[k]);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; }</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; <span class="keywordflow">return</span> returning_glist;</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160; }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;}</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a"> 2731</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a">rmplugin_x2go_on_plug_added</a>(GtkSocket *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;{</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; gchar *server;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; gint port;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Socket %d&quot;</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>);</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6">protocol_plugin_signal_connection_opened</a>(gp);</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; 22,</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; &amp;server,</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; &amp;port);</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Connected to %s:%d via X2Go&quot;</span>), server, port);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; g_free(server), server = NULL;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;}</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;</div><div class="line"><a name="l02754"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e"> 2754</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e">rmplugin_x2go_on_plug_removed</a>(GtkSocket *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;{</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(gp);</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;}</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;</div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38"> 2762</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38">rmplugin_x2go_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;{</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>, PLUGIN_NAME);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160; gpdata = g_new0(<a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a>, 1);</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>, gpdata, g_free);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; <span class="keywordflow">if</span> (!rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662">gtksocket_available</a>()) {</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; <span class="comment">/* report this in open_connection, not reportable here... */</span></div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; }</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; GList* <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a> = <a class="code" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d">rmplugin_x2go_populate_available_features_list</a>();</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="comment">// available_features can&#39;t be NULL cause if it fails, it gets populated with an</span></div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; <span class="comment">// old standard feature set.</span></div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a> = <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a>;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = 0;</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a> = 0;</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> = 0;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a> = NULL;</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a> = gtk_socket_new();</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; gtk_widget_show(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; g_signal_connect(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">&quot;plug-added&quot;</span>,</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a">rmplugin_x2go_on_plug_added</a>), gp);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; g_signal_connect(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">&quot;plug-removed&quot;</span>,</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e">rmplugin_x2go_on_plug_removed</a>), gp);</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; gtk_container_add(GTK_CONTAINER(gp), gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;}</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;</div><div class="line"><a name="l02801"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a"> 2801</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a">rmplugin_x2go_try_window_id</a>(Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>)</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;{</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; gint i;</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160; gboolean already_seen = FALSE;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Check if the window of X2Go Agent with ID [0x%lx] is already known or if &quot;</span></div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; <span class="stringliteral">&quot;it needs registration&quot;</span>, window_id);</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; pthread_mutex_lock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>-&gt;len; i++) {</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <span class="keywordflow">if</span> (g_array_index(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, Window, i) == window_id) {</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160; already_seen = TRUE;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Window of X2Go Agent with ID [0x%lx] &quot;</span></div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; <span class="stringliteral">&quot;already seen.&quot;</span>, window_id);</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; }</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160; }</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordflow">if</span> (!already_seen) {</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160; g_array_append_val(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, window_id);</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Registered new window for X2Go Agent with &quot;</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; <span class="stringliteral">&quot;ID [0x%lx].&quot;</span>, window_id);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; }</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; <span class="keywordflow">return</span> (!already_seen);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;}</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;</div><div class="line"><a name="l02829"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26"> 2829</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26">rmplugin_x2go_dummy_handler</a>(Display *dsp, XErrorEvent *err)</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;{</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160;}</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119"> 2835</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar *errmsg)</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;{</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = XOpenDisplay(gdk_display_get_name(gdk_display_get_default()));</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> == NULL) {</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Could not open X11 DISPLAY.&quot;</span>), 512);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; }</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a> = XSetErrorHandler(<a class="code" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26">rmplugin_x2go_dummy_handler</a>);</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160;</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; XSelectInput(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>,</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; XDefaultRootWindow(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>),</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160; SubstructureNotifyMask);</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;X11 event-watcher created.&quot;</span>);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;}</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;</div><div class="line"><a name="l02857"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134"> 2857</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134">rmplugin_x2go_monitor_create_notify</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp,</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <span class="keyword">const</span> gchar *cmd,</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; gchar *errmsg)</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;{</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; gboolean agent_window_found = FALSE;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; Atom atom;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; XEvent xev;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160; Window w;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160; Atom type;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keywordtype">int</span> format;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nitems, rest;</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data = NULL;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; guint16 non_createnotify_count = 0;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160;</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <span class="comment">// wait_amount * ts.tv_nsec = 20s</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="comment">// 100 * 0.2s = 20s</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; <span class="keywordtype">int</span> wait_amount = 100;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; CANCEL_DEFER</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for window of X2Go Agent to appear…&quot;</span>));</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; atom = XInternAtom(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, <span class="stringliteral">&quot;WM_COMMAND&quot;</span>, True);</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">if</span> (atom == None) {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; }</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; ts.tv_sec = 0;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <span class="comment">// 0.2s = 200000000ns</span></div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; ts.tv_nsec = 200000000;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keywordflow">while</span> (wait_amount &gt; 0) {</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; pthread_testcancel();</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <span class="keywordflow">if</span> (!(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> &gt; 0)) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Waiting for X2Go session to start…&quot;</span>);</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; <span class="keywordflow">while</span> (!XPending(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>)) {</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; wait_amount--;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; <span class="comment">// Don&#39;t spam the console. Print every second though.</span></div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160; <span class="keywordflow">if</span> (wait_amount % 5 == 0) {</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for PyHoca-CLI to &quot;</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; <span class="stringliteral">&quot;show the session&#39;s window…&quot;</span>));</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; }</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; }</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; XNextEvent(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, &amp;xev);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; <span class="comment">// Just ignore non CreatNotify events.</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; <span class="keywordflow">if</span> (xev.type != CreateNotify) {</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; non_createnotify_count++;</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="keywordflow">if</span> (non_createnotify_count % 5 == 0) {</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Saw &#39;%i&#39; X11 events, which weren&#39;t &quot;</span></div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; <span class="stringliteral">&quot;CreateNotify.&quot;</span>, non_createnotify_count);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; }</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; }</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; w = xev.xcreatewindow.window;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160; <span class="keywordflow">if</span> (XGetWindowProperty(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, w, atom, 0, 255, False,</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; AnyPropertyType, &amp;type, &amp;format, &amp;nitems, &amp;rest,</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; &amp;data) != Success) {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Could not get WM_COMMAND property from X11 &quot;</span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <span class="stringliteral">&quot;window ID [0x%lx].&quot;</span>, w);</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; }</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; <span class="keywordflow">if</span> (data) {</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Saw &#39;%i&#39; X11 events, which weren&#39;t &quot;</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; <span class="stringliteral">&quot;CreateNotify.&quot;</span>, non_createnotify_count);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Found X11 window with WM_COMMAND set &quot;</span></div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; <span class="stringliteral">&quot;to &#39;%s&#39;, the window ID is [0x%lx].&quot;</span>,</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; (<span class="keywordtype">char</span>*)data, w);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; }</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <span class="keywordflow">if</span> (data &amp;&amp; g_strrstr((gchar*)data, cmd) &amp;&amp;</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; <a class="code" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a">rmplugin_x2go_try_window_id</a>(w)) {</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a> = w;</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; agent_window_found = TRUE;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; XFree(data);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; }</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; <span class="keywordflow">if</span> (data)</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; XFree(data);</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; }</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; XSetErrorHandler(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; XCloseDisplay(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>);</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; <span class="keywordflow">if</span> (!agent_window_found) {</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;No X2Go session window appeared. &quot;</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; <span class="stringliteral">&quot;Something went wrong…&quot;</span>), 512);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;}</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a"> 2967</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a">rmplugin_x2go_start_session</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;{</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160;</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);;</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; <span class="keyword">const</span> gchar errmsg[512] = {0};</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; gboolean ret = TRUE;</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; gchar *servstr, *host, *username, *password, *command, *kbdlayout, *kbdtype,</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; *audio, *clipboard, *res, *ssh_privatekey;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; gint sshport, dpi;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; GdkDisplay *default_dsp;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; gint width, height;</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <span class="comment">// We save the X Display name (:0) as we will need to synchronize the clipboards</span></div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160; default_dsp = gdk_display_get_default();</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <span class="keyword">const</span> gchar *default_dsp_name = gdk_display_get_name(default_dsp);</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Default display is &#39;%s&#39;.&quot;</span>, default_dsp_name);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; servstr = GET_PLUGIN_STRING(<span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; <span class="keywordflow">if</span> (servstr) {</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(servstr, 22, &amp;host, &amp;sshport);</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; }</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160;</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; <span class="keywordflow">if</span> (!sshport) sshport=22;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160;</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; username = GET_PLUGIN_STRING(<span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; password = GET_PLUGIN_PASSWORD(<span class="stringliteral">&quot;password&quot;</span>);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; command = GET_PLUGIN_STRING(<span class="stringliteral">&quot;command&quot;</span>);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="keywordflow">if</span> (!command) command = <span class="stringliteral">&quot;TERMINAL&quot;</span>;</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; kbdlayout = GET_PLUGIN_STRING(<span class="stringliteral">&quot;kbdlayout&quot;</span>);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; kbdtype = GET_PLUGIN_STRING(<span class="stringliteral">&quot;kbdtype&quot;</span>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160;</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; audio = GET_PLUGIN_STRING(<span class="stringliteral">&quot;audio&quot;</span>);</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160;</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; clipboard = GET_PLUGIN_STRING(<span class="stringliteral">&quot;clipboard&quot;</span>);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160;</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; dpi = GET_PLUGIN_INT(<span class="stringliteral">&quot;dpi&quot;</span>, 80);</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; ssh_privatekey = GET_PLUGIN_STRING(<span class="stringliteral">&quot;ssh_privatekey&quot;</span>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160;</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; <span class="comment">// If empty set to NULL</span></div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="keywordflow">if</span>(ssh_privatekey &amp;&amp; g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ssh_privatekey = NULL;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; }</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; width = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#afe3c32a421cd5dcc735b99318ff8844a">get_profile_remote_width</a>(gp);</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; height = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a2b75137f9d7739c0d7881ee16e2aabfa">get_profile_remote_height</a>(gp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; <span class="comment">/* multiple of 4 */</span></div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; width = (width + 3) &amp; ~0x3;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; height = (height + 3) &amp; ~0x3;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="keywordflow">if</span> ((width &gt; 0) &amp;&amp; (height &gt; 0)) {</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; res = g_strdup_printf (<span class="stringliteral">&quot;%dx%d&quot;</span>, width, height);</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; res = <span class="stringliteral">&quot;800x600&quot;</span>;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; }</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Resolution set by user: &#39;%s&#39;.&quot;</span>, res);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Attached window to socket &#39;%d&#39;.&quot;</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>);</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; <span class="comment">/* register for notifications of window creation events */</span></div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(gp, (gchar*)&amp;errmsg);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160; <span class="comment">/* trigger the session start, session window should appear soon after this */</span></div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085">rmplugin_x2go_exec_x2go</a>(host, sshport, username, password, command,</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; kbdlayout, kbdtype, audio, clipboard, dpi,</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; res, ssh_privatekey, gp,</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160; (gchar*)&amp;errmsg);</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <span class="comment">/* get the window ID of the remote x2goagent */</span></div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134">rmplugin_x2go_monitor_create_notify</a>(gp, <span class="stringliteral">&quot;x2goagent&quot;</span>,</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; (gchar*)&amp;errmsg);</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; <span class="keywordflow">if</span> (!ret) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, &amp;errmsg);</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; }</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160;</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; <span class="comment">/* embed it */</span></div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GTK_SOCKET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;}</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160;</div><div class="line"><a name="l03060"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619"> 3060</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619">rmplugin_x2go_main</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;{</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; ret = <a class="code" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a">rmplugin_x2go_start_session</a>(gp);</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;}</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;</div><div class="line"><a name="l03072"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422"> 3072</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422">rmplugin_x2go_main_thread</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp)</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;{</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; <span class="keywordflow">if</span> (!gp) {</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; _(<span class="stringliteral">&quot;RemminaProtocolWidget* gp is &#39;NULL&#39;!&quot;</span>)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; ));</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; }</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160;</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619">rmplugin_x2go_main</a>(gp)) {</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>, gp);</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; }</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160;}</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;</div><div class="line"><a name="l03093"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637"> 3093</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637">rmplugin_x2go_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160;{</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="keywordflow">if</span> (!rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662">gtksocket_available</a>()) {</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;The %s protocol is &quot;</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; <span class="stringliteral">&quot;unavailable because GtkSocket only works under X.org&quot;</span>),</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; PLUGIN_NAME);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; }</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = gtk_socket_get_id(GTK_SOCKET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>));</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; <span class="comment">// casting to void* is allowed since return type &#39;gpointer&#39; is actually void*.</span></div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>, NULL, (<span class="keywordtype">void</span>*) <a class="code" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422">rmplugin_x2go_main_thread</a>, gp)) {</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Could not initialize &quot;</span></div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160; <span class="stringliteral">&quot;pthread. Falling back to non-threaded mode…&quot;</span>));</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; }</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;}</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;</div><div class="line"><a name="l03117"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada"> 3117</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada">rmplugin_x2go_query_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp,</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>* feature)</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;{</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;}</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160;</div><div class="line"><a name="l03124"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f"> 3124</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> <a class="code" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f">rmplugin_x2go_features</a>[] = {</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; {<a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7">REMMINA_PROTOCOL_FEATURE_TYPE_GTKSOCKET</a>, RMPLUGIN_X2GO_FEATURE_GTKSOCKET, NULL, NULL, NULL},</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; {<a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>, 0, NULL, NULL, NULL}</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160;};</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160;</div><div class="line"><a name="l03140"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51"> 3140</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51">rmplugin_x2go_enumeration_prettifier</a>(<span class="keyword">const</span> guint max_elements,</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <span class="keyword">const</span> guint current_element,</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; gchar* element_to_add,</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; gchar* <span class="keywordtype">string</span>)</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;{</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160; <span class="keywordflow">if</span> (max_elements &gt; 2) {</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to translate &#39;and&#39; into</span></div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; <span class="comment">// your language.</span></div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%sand &#39;%s&#39;&quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_element == max_elements - 2) {</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39; &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39;, &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; }</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (max_elements == 2) {</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to translate &#39;and&#39; into</span></div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <span class="comment">// your language.</span></div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; <span class="comment">// &#39;value1&#39; and &#39;value2&#39;</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%sand &#39;%s&#39;&quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; <span class="comment">// &#39;value1&#39; and &#39;value2&#39;</span></div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39; &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; }</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; <span class="keywordflow">return</span> g_strdup(element_to_add);</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; }</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;}</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160;</div><div class="line"><a name="l03194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a"> 3194</a></span>&#160;<span class="keyword">static</span> GError* <a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>(gchar* key, gchar* value,</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; gchar* data)</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160;{</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; GError *error = NULL;</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; <span class="keywordflow">if</span> (!data) {</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Invalid validation data in ProtocolSettings array!&quot;</span>);</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; }</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; gchar **elements_list = g_strsplit(data, <span class="stringliteral">&quot;,&quot;</span>, 0);</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160;</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; guint elements_amount = 0;</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; elements_amount = g_strv_length(elements_list);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160;</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; <span class="keywordflow">if</span> (elements_list == NULL ||</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; elements_list[0] == NULL ||</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; strlen(elements_list[0]) &lt;= 0)</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; {</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Validation data in ProtocolSettings array is invalid!&quot;</span>);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; }</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; gchar *data_str = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; <span class="keywordflow">if</span> (!key || !value) {</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Parameters &#39;key&#39; or &#39;value&#39; are &#39;NULL&#39;!&quot;</span>));</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Internal error.&quot;</span>));</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; }</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160;</div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; <span class="keywordflow">for</span> (guint i = 0; elements_list[i] != NULL; i++) {</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; <span class="comment">// Don&#39;t wanna crash if elements_list[i] is NULL.</span></div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; gchar* element = elements_list[i] ? elements_list[i] : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, element) == 0) {</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; <span class="comment">// We found value in elements_list. Value passed validation.</span></div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; }</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;</div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; data_str = <a class="code" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51">rmplugin_x2go_enumeration_prettifier</a>(elements_amount, i,</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; element, data_str);</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; }</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160;</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; <span class="keywordflow">if</span> (elements_amount &gt; 1) {</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Allowed values are %s.&quot;</span>), data_str);</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;The only allowed value is &#39;%s&#39;.&quot;</span>), data_str);</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; }</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160;</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; g_free(data_str);</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; g_strfreev(elements_list);</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160;</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;}</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160;</div><div class="line"><a name="l03267"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5"> 3267</a></span>&#160;<span class="keyword">static</span> GError* <a class="code" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5">rmplugin_x2go_int_setting_validator</a>(gchar* key, gpointer value,</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160; gchar* data)</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;{</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; GError *error = NULL;</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; gchar **integer_list = g_strsplit(data, <span class="stringliteral">&quot;;&quot;</span>, 0);</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; <span class="keywordflow">if</span> (integer_list == NULL ||</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; integer_list[0] == NULL ||</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; integer_list[1] == NULL ||</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; strlen(integer_list[0]) &lt;= 0 ||</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; strlen(integer_list[1]) &lt;= 0)</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; {</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Validation data in ProtocolSettings array is invalid!&quot;</span>);</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; }</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; gint minimum;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;minimum, integer_list[0], 10);</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; _(<span class="stringliteral">&quot;The lower limit is not a valid integer!&quot;</span>)</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; ));</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>) {</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; _(<span class="stringliteral">&quot;The lower limit is too high!&quot;</span>)</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; ));</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; _(<span class="stringliteral">&quot;The lower limit is too low!&quot;</span>)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; ));</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>)</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; ));</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; }</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160;</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Please check the RemminaProtocolSetting &quot;</span></div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; <span class="stringliteral">&quot;array for possible errors.&quot;</span>));</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; }</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; gint maximum;</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;maximum, integer_list[1], 10);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; _(<span class="stringliteral">&quot;The upper limit is not a valid integer!&quot;</span>)</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; ));</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>) {</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; _(<span class="stringliteral">&quot;The upper limit is too high!&quot;</span>)</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; ));</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; _(<span class="stringliteral">&quot;The upper limit is too low!&quot;</span>)</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; ));</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>)</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; ));</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; }</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160;</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Please check the RemminaProtocolSetting &quot;</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; <span class="stringliteral">&quot;array for possible errors.&quot;</span>));</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; }</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; gint int_value;</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;int_value, value, 10);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; <span class="comment">// non-numerical characters are can&#39;t be entered but, the user can</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; <span class="comment">// input an empty string.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;The input is not a valid integer!&quot;</span>));</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a> || err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Input must be a number between %i and %i.&quot;</span>),</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; minimum, maximum);</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>));</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; }</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160;</div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; }</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160;</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; <span class="comment">/*REMMINA_PLUGIN_DEBUG(&quot;Key: \t%s&quot;, (gchar*) key);</span></div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Value:\t%s&quot;, (gchar*) value);</span></div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Data: \t%s&quot;, data);</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Min: %i, Max: %i&quot;, minimum, maximum);</span></div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Value converted:\t%i&quot;, int_value);*/</span></div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a> &amp;&amp; (minimum &gt; int_value || int_value &gt; maximum)) {</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Input must be a number between %i and %i.&quot;</span>),</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; minimum, maximum);</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; }</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160;</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; <span class="comment">// Should be NULL.</span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160;}</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160;</div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160;<span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160;<span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;<span class="comment"> * g) Validation data pointer, will be passed to the validation callback method.</span></div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160;<span class="comment"> * h) Validation callback method (Can be NULL. Every entry will be valid then.)</span></div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160;<span class="comment"> * use following prototype:</span></div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160;<span class="comment"> * gboolean mysetting_validator_method(gpointer key, gpointer value,</span></div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160;<span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;<span class="comment"> * gpointer key is a gchar* containing the setting&#39;s name,</span></div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160;<span class="comment"> * gpointer value contains the value which should be validated,</span></div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;<span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l03395"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9"> 3395</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9">rmplugin_x2go_basic_settings</a>[] = {</div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">&quot;server&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;username&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Username&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">&quot;password&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Password&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;command&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Startup program&quot;</span>), FALSE,</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;MATE,KDE,XFCE,LXDE,TERMINAL&quot;</span>,</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Which command should be executed after creating the X2Go session?&quot;</span>), NULL, NULL},</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>, <span class="stringliteral">&quot;resolution&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;kbdlayout&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Keyboard Layout (auto)&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;kbdtype&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Keyboard type (auto)&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;audio&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Audio support&quot;</span>), FALSE,</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;pulse,esd,none&quot;</span>,</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;The sound system of the X2Go server (default: &#39;pulse&#39;).&quot;</span>),</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;pulse,esd,none&quot;</span>,</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>)},</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;clipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Clipboard direction&quot;</span>), FALSE,</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;none,server,client,both&quot;</span>,</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Which direction should clipboard content be copied? &quot;</span></div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; <span class="stringliteral">&quot;(default: &#39;both&#39;).&quot;</span>),</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;none,server,client,both&quot;</span>,</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>)},</div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583">REMMINA_PROTOCOL_SETTING_TYPE_INT</a>, <span class="stringliteral">&quot;dpi&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;DPI resolution&quot;</span>), FALSE, NULL,</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Launch session with a specific resolution (in dots per inch). &quot;</span></div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; <span class="stringliteral">&quot;Must be between 20 and 400.&quot;</span>),</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;20;400&quot;</span>, <span class="comment">// &quot;&lt;min&gt;;&lt;max&gt;;&quot;</span></div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5">rmplugin_x2go_int_setting_validator</a>)},</div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">&quot;ssh_privatekey&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SSH identity file&quot;</span>), FALSE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Your private key&quot;</span>), NULL, NULL },</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, FALSE, NULL, NULL, NULL, NULL}};</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;<span class="comment">/* Protocol plugin definition and features */</span></div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> rmplugin_x2go = {</div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, <span class="comment">// Type</span></div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; PLUGIN_NAME, <span class="comment">// Name</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; PLUGIN_DESCRIPTION, <span class="comment">// Description</span></div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; PLUGIN_VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; PLUGIN_APPICON, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160; PLUGIN_SSH_APPICON, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160; <a class="code" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9">rmplugin_x2go_basic_settings</a>, <span class="comment">// Array for basic settings</span></div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; NULL, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160; <a class="code" href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a8f910597287a73453a5f09ca0037d093">REMMINA_PROTOCOL_SSH_SETTING_NONE</a>, <span class="comment">// SSH settings type</span></div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160; <a class="code" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f">rmplugin_x2go_features</a>, <span class="comment">// Array for available features</span></div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160; <a class="code" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38">rmplugin_x2go_init</a>, <span class="comment">// Plugin initialization method</span></div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160; <a class="code" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637">rmplugin_x2go_open_connection</a>, <span class="comment">// Plugin open connection method</span></div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>, <span class="comment">// Plugin connection-method closure</span></div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160; <a class="code" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada">rmplugin_x2go_query_feature</a>, <span class="comment">// Query for available features</span></div><div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160; NULL, <span class="comment">// Call a feature</span></div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160; NULL, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160; NULL, <span class="comment">// Screenshot</span></div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160;};</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160;</div><div class="line"><a name="l03446"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 3446</a></span>&#160;G_MODULE_EXPORT gboolean <a class="code" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208">remmina_plugin_entry</a>(<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *service)</div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160;{</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160; TRACE_CALL(<span class="stringliteral">&quot;remmina_plugin_entry&quot;</span>);</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160; rm_plugin_service = service;</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;</div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160; <span class="keywordflow">if</span> (!service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *) &amp;rmplugin_x2go)) {</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160; }</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160;</div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; pthread_mutex_init(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>, NULL);</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a> = g_array_new(FALSE, TRUE, <span class="keyword">sizeof</span>(Window));</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160;</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;X2Go plugin loaded.&quot;</span>));</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160;}</div><div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00100">types.h:100</a></div></div>
+<a href="x2go__plugin_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"> * Project: Remmina Plugin X2Go</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Description: Remmina protocol plugin to connect via X2Go using PyHocaCLI</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Author: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Antenore Gatta &lt;antenore@simbiosi.org&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * Copyright: 2010-2011 Vic Lee</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * 2015 Antenore Gatta</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * 2016-2018 Antenore Gatta, Giovanni Panozzo</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * 2019 Mike Gabriel</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * 2021 Daniel Teichmann</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * License: GPL-2+</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</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="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor,</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Boston, MA 02110-1301, USA.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * In addition, as a special exception, the copyright holders give</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * permission to link the code of portions of this program with the</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * OpenSSL library under certain conditions as described in each</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * individual source file, and distribute linked combinations</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * including the two.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * You must obey the GNU General Public License in all respects</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * for all of the code used other than OpenSSL. * If you modify</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * file(s) with this exception, you may extend this exception to your</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</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="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * do not wish to do so, delete this exception statement from your</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * version. * If you delete this exception statement from all source</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * files in the program, then also delete it here.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> */</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"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="x2go__plugin_8h.html">x2go_plugin.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__plugin_8h.html">common/remmina_plugin.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">#include &lt;gtk/gtkx.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#ifdef GDK_WINDOWING_X11</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkx.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &lt;gdk/gdkwayland.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</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="preprocessor">#include &lt;X11/Xlib.h&gt;</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#include &lt;X11/XKBlib.h&gt;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;X11/extensions/XKBrules.h&gt;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#include &lt;ctype.h&gt;</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;<span class="preprocessor">#define FEATURE_AVAILABLE(gpdata, feature) \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> gpdata-&gt;available_features ? (g_list_find_custom( \</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"> gpdata-&gt;available_features, \</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"> feature, \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> (GCompareFunc) g_strcmp0 \</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"> ) ? TRUE : FALSE) : FALSE</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 FEATURE_NOT_AVAIL_STR(feature) \</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"> g_strdup_printf(_(&quot;The command-line feature &#39;%s&#39; is not available! Attempting &quot; \</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"> &quot;to start PyHoca-CLI without using this feature…&quot;), feature)</span></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="preprocessor">#define GET_PLUGIN_DATA(gp) \</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"> (RemminaPluginX2GoData*) g_object_get_data(G_OBJECT(gp), &quot;plugin-data&quot;)</span></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"> 77</span>&#160;<span class="comment">// --------- SESSIONS ------------</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#define SET_RESUME_SESSION(gp, resume_data) \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), &quot;resume-session-data&quot;, \</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> resume_data, \</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"> g_free)</span></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="preprocessor">#define GET_RESUME_SESSION(gp) \</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="preprocessor"> (gchar*) g_object_get_data(G_OBJECT(gp), &quot;resume-session-data&quot;)</span></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;<span class="comment">// A session is selected if the returning value is something other than 0.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#define IS_SESSION_SELECTED(gp) \</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"> g_object_get_data(G_OBJECT(gp), &quot;session-selected&quot;) ? TRUE : FALSE</span></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">// We don&#39;t use the function as a real pointer but rather as a boolean value.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor">#define SET_SESSION_SELECTED(gp, is_session_selected) \</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"> g_object_set_data_full(G_OBJECT(gp), &quot;session-selected&quot;, \</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"> is_session_selected, \</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"> NULL)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">// -------------------</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_INFO(fmt, ...) \</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_info(&quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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="preprocessor">#define REMMINA_PLUGIN_MESSAGE(fmt, ...) \</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_message(&quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_DEBUG(fmt, ...) \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_debug(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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"> 109</span>&#160;<span class="preprocessor">#define REMMINA_PLUGIN_WARNING(fmt, ...) \</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_warning(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_AUDIT(fmt, ...) \</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_audit(__func__, fmt, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_ERROR(fmt, ...) \</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_error(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</span></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;<span class="preprocessor">#define REMMINA_PLUGIN_CRITICAL(fmt, ...) \</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;_remmina_critical(__func__, &quot;[%s] &quot; fmt, \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"> PLUGIN_NAME, ##__VA_ARGS__)</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="preprocessor">#define GET_PLUGIN_STRING(value) \</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor"> g_strdup(rm_plugin_service-&gt;file_get_string(remminafile, value))</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="preprocessor">#define GET_PLUGIN_PASSWORD(value) \</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"> GET_PLUGIN_STRING(value)</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="preprocessor">#define GET_PLUGIN_INT(value, default_value) \</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;file_get_int(remminafile, value, default_value)</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="preprocessor">#define GET_PLUGIN_BOOLEAN(value) \</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"> rm_plugin_service-&gt;file_get_int(remminafile, value, FALSE)</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"><a class="line" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b"> 136</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *<a class="code" href="x2go__plugin_8c.html#ab54b79eb5b8f9560d3e785cf16c45a9b">rm_plugin_service</a> = 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"><a class="line" href="struct___remmina_plugin_x2_go_data.html"> 138</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a> {</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2"> 139</a></span>&#160; GtkWidget *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe"> 140</a></span>&#160; gint <a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916"> 142</a></span>&#160; pthread_t <a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5"> 144</a></span>&#160; Display *<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022"> 145</a></span>&#160; Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361"> 146</a></span>&#160; int (*<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>)(Display *, XErrorEvent *);</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393"> 148</a></span>&#160; GPid <a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>;</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a"> 150</a></span>&#160; gboolean <a class="code" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a">disconnected</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"><a class="line" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e"> 152</a></span>&#160; GList* <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;} <a class="code" href="x2go__plugin_8c.html#a37d3729bb8c4dbd3be32eeea7d04c7d5">RemminaPluginX2GoData</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html"> 159</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct___x2_go_custom_user_data.html">_X2GoCustomUserData</a> {</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5"> 160</a></span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* <a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64"> 161</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83"> 162</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b"> 163</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24"> 164</a></span>&#160; gpointer <a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;} <a class="code" href="x2go__plugin_8c.html#ab0e7b0c28fbb5ac24d7ed481250494b4">X2GoCustomUserData</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165"> 174</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165">SESSION_PROPERTIES</a> {</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a"> 175</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a> = 0,</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b"> 176</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>,</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94"> 177</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0"> 178</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>,</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172"> 179</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>,</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03"> 180</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>,</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961"> 181</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>,</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a"> 182</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>,</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817"> 183</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>,</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53"> 184</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>,</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7"> 185</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>,</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b"> 186</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>,</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0"> 187</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>,</div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2"> 188</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a> <span class="comment">// Must be last. Counts all enum elements.</span></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;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">// Following str2int code was adapted from Stackoverflow:</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">// https://stackoverflow.com/questions/7021725/how-to-convert-a-string-to-integer-in-c</span></div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11"> 193</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11">_str2int_errno</a> {</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1"> 194</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a>,</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850"> 195</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>,</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8"> 196</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>,</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee"> 197</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>,</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d"> 198</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;} <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645"> 217</a></span>&#160;<a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(gint *out, gchar *s, gint base)</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; gchar *end;</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; <span class="keywordflow">if</span> (!s || !out || base &lt;= 0) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>;</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; <span class="keywordflow">if</span> (s[0] == <span class="charliteral">&#39;\0&#39;</span> || isspace(s[0])) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>;</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; errno = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; glong l = strtol(s, &amp;end, base);</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="comment">/* Both checks are needed because INT_MAX == LONG_MAX is possible. */</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (l &gt; INT_MAX || (errno == ERANGE &amp;&amp; l == LONG_MAX)) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (l &lt; INT_MIN || (errno == ERANGE &amp;&amp; l == LONG_MIN)) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (*end != <span class="charliteral">&#39;\0&#39;</span>) <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>;</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; *out = l;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a>;</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;</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="struct___dialog_data.html"> 267</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a></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="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a"> 269</a></span>&#160; GtkWindow *<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893"> 270</a></span>&#160; GtkDialogFlags <a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb"> 271</a></span>&#160; GtkMessageType <a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a>;</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4"> 272</a></span>&#160; GtkButtonsType <a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a>;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8"> 273</a></span>&#160; gchar *<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>;</div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105"> 274</a></span>&#160; gchar *<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a>;</div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd"> 275</a></span>&#160; GCallback <a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a>;</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="comment">// If the dialog needs to be custom.</span></div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f"> 278</a></span>&#160; GCallback <a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7"> 279</a></span>&#160; gpointer <a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a>;</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;</div><div class="line"><a name="l00290"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa"> 290</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</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;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = (<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</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; <span class="keywordflow">if</span> (ddata) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="comment">// Can&#39;t check type, flags or buttons</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// because they are enums and &#39;0&#39; is a valid value</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (!ddata-&gt;title || !ddata-&gt;message) {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Broken `DialogData`! Aborting…&quot;</span>));</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Can&#39;t retrieve `DialogData`! Aborting…&quot;</span>));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;`DialogData` checks passed. Now showing dialog…&quot;</span>);</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; GtkWidget* widget_gtk_dialog = NULL;</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; <span class="keywordflow">if</span> (ddata-&gt;dialog_factory_func != NULL) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Calling *custom* dialog factory function…&quot;</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; GCallback dialog_factory_func = G_CALLBACK(ddata-&gt;dialog_factory_func);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; gpointer dialog_factory_data = ddata-&gt;dialog_factory_data;</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="comment">// Calling dialog_factory_func(custom_data, dialog_factory_data);</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; widget_gtk_dialog = ((GtkWidget* (*)(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>*, gpointer))</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; dialog_factory_func)(custom_data, dialog_factory_data);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; widget_gtk_dialog = gtk_message_dialog_new(ddata-&gt;parent,</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; ddata-&gt;flags,</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; ddata-&gt;type,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; ddata-&gt;buttons,</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, ddata-&gt;title);</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; gtk_message_dialog_format_secondary_text(</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; GTK_MESSAGE_DIALOG(widget_gtk_dialog), <span class="stringliteral">&quot;%s&quot;</span>, ddata-&gt;message);</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"> 341</span>&#160; <span class="keywordflow">if</span> (!widget_gtk_dialog) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;Error! Aborting.&quot;</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">if</span> (ddata-&gt;callbackfunc) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; g_signal_connect_swapped(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">&quot;response&quot;</span>,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; G_CALLBACK(ddata-&gt;callbackfunc),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; custom_data);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; g_signal_connect(G_OBJECT(widget_gtk_dialog), <span class="stringliteral">&quot;response&quot;</span>,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; G_CALLBACK(gtk_widget_destroy),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; NULL);</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"> 356</span>&#160; gtk_widget_show_all(widget_gtk_dialog);</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; <span class="comment">// Delete ddata object and reference &#39;dialog-data&#39; in gp.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; g_object_set_data(G_OBJECT(gp), <span class="stringliteral">&quot;dialog-data&quot;</span>, NULL);</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 363</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05"> 367</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05">SESSION_CHOOSER_RESPONSE_TYPE</a> {</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f"> 368</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a> = 0,</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc"> 369</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>,</div><div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4"> 370</a></span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>,</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;</div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e"> 382</a></span>&#160;<span class="keyword">static</span> GtkWidget* <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GtkWidget* parent, <span class="keyword">const</span> gchar* name)</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; <span class="keyword">const</span> gchar* parent_name = gtk_widget_get_name((GtkWidget*) parent);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span> (g_ascii_strcasecmp(parent_name, (gchar*) name) == 0) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span> parent;</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; <span class="keywordflow">if</span> (GTK_IS_BIN(parent)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; GtkWidget *child = gtk_bin_get_child(GTK_BIN(parent));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(child, name);</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;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span> (GTK_IS_CONTAINER(parent)) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; GList *children = gtk_container_get_children(GTK_CONTAINER(parent));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">while</span> (children != NULL) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; GtkWidget *widget = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(children-&gt;data, name);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span> (widget != NULL) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> widget;</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; children = g_list_next(children);</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; }</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a"> 419</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a">rmplugin_x2go_session_chooser_row_activated</a>(GtkTreeView *treeview,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; GtkTreePath *path,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; GtkTreeViewColumn *column,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</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="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</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; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// dialog_data (unused)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// connect_data (unused)</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; GtkWidget* dialog = GTK_WIDGET(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; gchar *session_id;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; GtkTreeModel *model = gtk_tree_view_get_model(treeview);</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; <span class="keywordflow">if</span> (gtk_tree_model_get_iter(model, &amp;iter, path)) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; gtk_tree_model_get(GTK_TREE_MODEL(model), &amp;iter,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>, &amp;session_id, -1);</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="comment">// Silent bail out.</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; SET_RESUME_SESSION(gp, session_id);</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// We use a trick here. As long as there is something other than 0</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="comment">// stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; gtk_widget_hide(GTK_WIDGET(dialog));</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; gtk_widget_destroy(GTK_WIDGET(dialog));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 463</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6"> 471</a></span>&#160;<span class="keyword">static</span> gchar *<a class="code" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6">rmplugin_x2go_session_property_to_string</a>(guint session_property) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; gchar* return_char = NULL;</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; <span class="keywordflow">switch</span> (session_property) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// I think we can close one eye here regarding max line-length.</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;X Display&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Status&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Session ID&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Create date&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Suspended since&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Agent PID&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Username&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Hostname&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Cookie&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Graphic port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;SND port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;SSHFS port&quot;</span>)); <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">case</span> <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>: return_char = g_strdup(_(<span class="stringliteral">&quot;Visible&quot;</span>)); <span class="keywordflow">break</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;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span> return_char;</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;</div><div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1"> 509</a></span>&#160;<span class="keyword">static</span> GtkWidget* <a class="code" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1">rmplugin_x2go_choose_session_dialog_factory</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data,</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; GList *sessions_list)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> ||</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>) {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; ));</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="keywordflow">return</span> NULL;</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"> 524</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>* ddata = (<span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a>;</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; if (!ddata || !sessions_list || !ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t retrieve valid `DialogData` or &quot;</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="stringliteral">&quot;`sessions_list`! Aborting…&quot;</span>));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; GtkWidget *widget_gtk_dialog = NULL;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; widget_gtk_dialog = gtk_dialog_new_with_buttons(ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a>, ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a>,</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a>,</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// TRANSLATORS: Stick to x2goclient&#39;s translation for terminate.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; _(<span class="stringliteral">&quot;_Terminate&quot;</span>),</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>,</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// TRANSLATORS: Stick to x2goclient&#39;s translation for resume.</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; _(<span class="stringliteral">&quot;_Resume&quot;</span>),</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; _(<span class="stringliteral">&quot;_New&quot;</span>),</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a>,</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; 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; GtkWidget *button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; GTK_DIALOG(widget_gtk_dialog),</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// TRANSLATORS: Tooltip for terminating button inside Session-Chooser-Dialog.</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s way of translating.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; gtk_widget_set_tooltip_text(button, _(<span class="stringliteral">&quot;Terminating X2Go sessions can take a moment.&quot;</span>));</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"> 552</span>&#160;<span class="preprocessor"> #define DEFAULT_DIALOG_WIDTH 720</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor"> #define DEFAULT_DIALOG_HEIGHT (DEFAULT_DIALOG_WIDTH * 9) / 16</span></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; gtk_widget_set_size_request(GTK_WIDGET(widget_gtk_dialog),</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; gtk_window_set_default_size(GTK_WINDOW(widget_gtk_dialog),</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_HEIGHT);</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; gtk_window_set_resizable(GTK_WINDOW(widget_gtk_dialog), TRUE);</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; GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">//gtk_widget_show(scrolled_window);</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; GTK_DIALOG(widget_gtk_dialog))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; ), GTK_WIDGET(scrolled_window), TRUE, TRUE, 5);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; GTK_POLICY_AUTOMATIC,</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; GTK_POLICY_AUTOMATIC);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; GType types[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>];</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; <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; ++i) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">// Everything is a String. (Except IS_VISIBLE flag)</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="comment">// If that changes one day, you could extent the if statement here.</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// But you would propably need a *lot* of refactoring.</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// Especially in the session parser.</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; types[i] = G_TYPE_BOOLEAN;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; types[i] = G_TYPE_STRING;</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; }</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; <span class="comment">// create tree view</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; GtkListStore *store = gtk_list_store_newv(SESSION_NUM_PROPERTIES, types);</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; GtkTreeModelFilter *filter = GTK_TREE_MODEL_FILTER(</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; gtk_tree_model_filter_new(GTK_TREE_MODEL(store),</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; NULL)</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; gtk_tree_model_filter_set_visible_column(filter, <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; GtkWidget *tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(filter));</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; g_object_unref (G_OBJECT (store)); <span class="comment">// tree now holds reference</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; gtk_widget_set_size_request(tree_view, -1, 300);</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; <span class="comment">// Gets name to be findable by rmplugin_x2go_find_child()</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; gtk_widget_set_name(GTK_WIDGET(tree_view), <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</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; <span class="comment">// create list view columns</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), TRUE);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW(tree_view), FALSE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree_view), TRUE);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; gtk_widget_show (tree_view);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; gtk_container_add (GTK_CONTAINER(scrolled_window), tree_view);</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; GtkTreeViewColumn *tree_view_col = NULL;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; GtkCellRenderer *cell_renderer = NULL;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; gchar *header_title = NULL;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// First to last in SESSION_PROPERTIES.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">for</span> (guint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; ++i) {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// Do not display SESSION_DIALOG_IS_VISIBLE.</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) <span class="keywordflow">continue</span>;</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; header_title = <a class="code" href="x2go__plugin_8c.html#acd692852ebb84bbc2978b44aff7345b6">rmplugin_x2go_session_property_to_string</a>(i);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">if</span> (!header_title) {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>), g_strdup_printf(</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; _(<span class="stringliteral">&quot;Unknown property &#39;%i&#39;&quot;</span>), i</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; header_title = g_strdup_printf(_(<span class="stringliteral">&quot;Unknown property &#39;%i&#39;&quot;</span>), i);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; tree_view_col = gtk_tree_view_column_new();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; gtk_tree_view_column_set_title(tree_view_col, header_title);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; gtk_tree_view_column_set_clickable(tree_view_col, FALSE);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; gtk_tree_view_column_set_sizing (tree_view_col, GTK_TREE_VIEW_COLUMN_AUTOSIZE);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; gtk_tree_view_column_set_resizable(tree_view_col, TRUE);</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; cell_renderer = gtk_cell_renderer_text_new();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; gtk_tree_view_column_pack_start(tree_view_col, cell_renderer, TRUE);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; gtk_tree_view_column_add_attribute(tree_view_col, cell_renderer, <span class="stringliteral">&quot;text&quot;</span>, i);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), tree_view_col);</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; GList *elem = NULL;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; GtkTreeIter iter;</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">for</span> (elem = sessions_list; elem; elem = elem-&gt;next) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; gchar** session = (gchar**) elem-&gt;data;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; g_assert(session != NULL);</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; gtk_list_store_append(store, &amp;iter);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>; i++) {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; gchar* <span class="keyword">property</span> = session[i];</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; GValue a = G_VALUE_INIT;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// Everything here is a string (except SESSION_DIALOG_IS_VISIBLE)</span></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="keywordflow">if</span> (i == <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>) {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; g_value_init(&amp;a, G_TYPE_BOOLEAN);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; g_assert(G_VALUE_HOLDS_BOOLEAN(&amp;a) &amp;&amp; <span class="stringliteral">&quot;GValue does not &quot;</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="stringliteral">&quot;hold a boolean!&quot;</span>);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="comment">// Default is to show every new session.</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; g_value_set_boolean(&amp;a, TRUE);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; g_value_init(&amp;a, G_TYPE_STRING);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; g_assert(G_VALUE_HOLDS_STRING(&amp;a) &amp;&amp; <span class="stringliteral">&quot;GValue does not &quot;</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="stringliteral">&quot;hold a string!&quot;</span>);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; g_value_set_static_string (&amp;a, property);</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; gtk_list_store_set_value(store, &amp;iter, i, &amp;a);</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;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * opt1 -&gt; dialog widget (GtkWidget*)</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = widget_gtk_dialog;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; g_signal_connect(tree_view, <span class="stringliteral">&quot;row-activated&quot;</span>,</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#afd5caba73120c1dd6bd7bc0108c0a49a">rmplugin_x2go_session_chooser_row_activated</a>),</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; custom_data);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> widget_gtk_dialog;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;}</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358"> 702</a></span>&#160;<span class="keyword">static</span> GtkTreeModelFilter* <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(GtkWidget *dialog,</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; GtkTreeView* treeview)</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">//REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; GtkTreeModel *return_model = NULL;</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="keywordflow">if</span> (!treeview &amp;&amp; dialog) {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; GtkWidget *treeview_new = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span> (!treeview_new) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t find child GtkTreeView of &quot;</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="stringliteral">&quot;session chooser dialog.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_new));</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (treeview) {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; return_model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; _(<span class="stringliteral">&quot;Neither the &#39;dialog&#39; nor &#39;treeview&#39; parameters are initialized! &quot;</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="stringliteral">&quot;At least one of them must be given.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">if</span> (!return_model || !GTK_TREE_MODEL_FILTER(return_model)) {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; _(<span class="stringliteral">&quot;Could not obtain \&quot;GtkTreeModelFilter*\&quot; of the session chooser dialog, &quot;</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="stringliteral">&quot;for unknown reason.&quot;</span>)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ));</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;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">return</span> GTK_TREE_MODEL_FILTER(return_model);</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;</div><div class="line"><a name="l00753"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3"> 753</a></span>&#160;<span class="keyword">static</span> GtkTreePath* <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(GtkWidget *dialog)</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; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; GtkWidget *treeview = <a class="code" href="x2go__plugin_8c.html#a118178a7ce36692fd0fa90c7c0dcbe0e">rmplugin_x2go_find_child</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="stringliteral">&quot;session_chooser_treeview&quot;</span>);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (!treeview) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t find child GtkTreeView of session chooser dialog.&quot;</span>)</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; <span class="keywordflow">return</span> NULL;</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;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (!selection) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get currently selected row (session)!&quot;</span>)</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; ));</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; NULL, GTK_TREE_VIEW(treeview));</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> NULL; <span class="comment">// error message was already handled.</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; GtkTreeModel *filter_model = GTK_TREE_MODEL(filter);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; g_assert(filter_model &amp;&amp; <span class="stringliteral">&quot;Could not cast &#39;filter&#39; to a GtkTreeModel!&quot;</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; GList *selected_rows = gtk_tree_selection_get_selected_rows(selection, &amp;filter_model);</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; <span class="comment">// We only support single selection.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; gint selected_rows_num = gtk_tree_selection_count_selected_rows(selection);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (selected_rows_num != 1) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>), g_strdup_printf(</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; _(<span class="stringliteral">&quot;Exactly one session should be selectable but &#39;%i&#39; rows &quot;</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="stringliteral">&quot;(sessions) are selected.&quot;</span>),</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; selected_rows_num</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; )));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> NULL;</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">// This would be very dangerous (we didn&#39;t check for NULL) if we hadn&#39;t just</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="comment">// checked that only one row is selected.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; GtkTreePath *path = selected_rows-&gt;data;</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="comment">// Convert to be path of GtkTreeModelFilter and *not* its child GtkTreeModel.</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; path = gtk_tree_model_filter_convert_child_path_to_path(filter, path);</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; <span class="keywordflow">return</span> path;</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;</div><div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7"> 817</a></span>&#160;<span class="keyword">static</span> GValue <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(GtkWidget *dialog,</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; gint property_index,</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; GtkTreePath *row)</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;{</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">//REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; GValue ret_value = G_VALUE_INIT;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">if</span> (!row) {</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; GtkTreePath *selected_row = <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(dialog);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span> (!selected_row) <span class="keywordflow">return</span> ret_value; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; row = selected_row;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(dialog, NULL);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> ret_value; <span class="comment">// error message was already handled.</span></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; GtkTreeIter iter;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; gboolean success = gtk_tree_model_get_iter(model, &amp;iter, row);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span> (!success) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; _(<span class="stringliteral">&quot;Failed to fill &#39;GtkTreeIter&#39;.&quot;</span>)</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;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> ret_value;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</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; GValue <span class="keyword">property</span> = G_VALUE_INIT;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; gtk_tree_model_get_value(model, &amp;iter, property_index, &amp;property);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">return</span> property;</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="l00859"></a><span class="lineno"> 859</span>&#160;<span class="comment">/*static void rmplugin_x2go_dump_session_properties(GtkTreeModel *model, GtkTreePath *path,</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="comment"> GtkTreeIter *iter, GtkWidget *dialog)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="comment">{</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="comment"> //REMMINA_PLUGIN_DEBUG(&quot;Function entry.&quot;);</span></div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="comment"> g_debug(_(&quot;Properties for session with path &#39;%s&#39;:&quot;), gtk_tree_path_to_string(path));</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;<span class="comment"> for (guint i = 0; i &lt; SESSION_NUM_PROPERTIES; i++) {</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="comment"> GValue property = G_VALUE_INIT;</span></div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;<span class="comment"> property = rmplugin_x2go_session_chooser_get_property(dialog, i, path);</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="comment"> gchar* display_name = rmplugin_x2go_session_property_to_string(i);</span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="comment"> g_assert(display_name &amp;&amp; &quot;Couldn&#39;t get display name for a property!&quot;);</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="comment"> if (i == SESSION_DIALOG_IS_VISIBLE) {</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="comment"> g_assert(G_VALUE_HOLDS_BOOLEAN(&amp;property) &amp;&amp; &quot;GValue does not &quot;</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="comment"> &quot;hold a boolean!&quot;);</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;<span class="comment"> g_debug(&quot;\t%s: &#39;%s&#39;&quot;, display_name,</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;<span class="comment"> g_value_get_boolean(&amp;property) ? &quot;TRUE&quot; : &quot;FALSE&quot;);</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;<span class="comment"> } else {</span></div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;<span class="comment"> g_assert(G_VALUE_HOLDS_STRING(&amp;property) &amp;&amp; &quot;GValue does not &quot;</span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;<span class="comment"> &quot;hold a string!&quot;);</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="comment"> g_debug(&quot;\t%s: &#39;%s&#39;&quot;, display_name, g_value_get_string(&amp;property));</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="comment">}*/</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67"> 898</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(guint argc, gchar* argv[],</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; GError** error, gchar** env)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="keywordflow">if</span> (!argv) {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;argv&#39; is &#39;NULL&#39;.&quot;</span>)</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keywordflow">return</span> NULL;</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="keywordflow">if</span> (!error) {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">// Can&#39;t report error message back since &#39;error&#39; is NULL.</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;error&#39; is &#39;NULL&#39;.&quot;</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; <span class="keywordflow">return</span> NULL;</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="keywordflow">if</span> (!env || !env[0]) {</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; _(<span class="stringliteral">&quot;parameter &#39;env&#39; is either invalid or uninitialized.&quot;</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">return</span> 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; gint exit_code = 0;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; gchar *standard_out;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// Just supresses pyhoca-cli&#39;s help message when pyhoca-cli&#39;s version is too old.</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; gchar *standard_err;</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; gboolean success_ret = g_spawn_sync(NULL, argv, env, G_SPAWN_SEARCH_PATH, NULL,</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; NULL, &amp;standard_out, &amp;standard_err,</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; &amp;exit_code, error);</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; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Started PyHoca-CLI with the following arguments:&quot;</span>));</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="comment">// Print every argument except passwords. Free all arg strings.</span></div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; argc - 1; i++) {</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; gchar* curr_arg = argv[i];</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"> 946</span>&#160; <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">&quot;--password&quot;</span>) ||</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; g_str_equal(curr_arg, <span class="stringliteral">&quot;--ssh-passphrase&quot;</span>)) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; g_printf(<span class="stringliteral">&quot;XXXXXX &quot;</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; g_free(argv[++i]);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; g_free(curr_arg);</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; }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; g_printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">/* TOO VERBOSE: */</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, _(&quot;Started PyHoca-CLI with the &quot;</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"> &quot;following environment variables:&quot;));</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, g_strjoinv(&quot;\n&quot;, env));</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="comment"> */</span></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"> 967</span>&#160; <span class="keywordflow">if</span> (standard_err &amp;&amp; strlen(standard_err) &gt; 0) {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(standard_err, <span class="stringliteral">&quot;pyhoca-cli: error: a socket error &quot;</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="stringliteral">&quot;occured while establishing the connection:&quot;</span>)) {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="comment">// Log error into GUI.</span></div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; _(<span class="stringliteral">&quot;The necessary PyHoca-CLI process has encountered a &quot;</span></div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="stringliteral">&quot;internet connection problem.&quot;</span>)</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"> 976</span>&#160; <span class="comment">// Log error into debug window and stdout</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s:\n%s&quot;</span>, errmsg, standard_err);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; _(<span class="stringliteral">&quot;Could not start &quot;</span></div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="stringliteral">&quot;PyHoca-CLI:\n%s&quot;</span>),</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; standard_err</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; );</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">return</span> NULL;</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">else</span> <span class="keywordflow">if</span> (!success_ret || (*error) || strlen(standard_out) &lt;= 0 || exit_code) {</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="keywordflow">if</span> (!(*error)) {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; _(<span class="stringliteral">&quot;An unknown error occured while trying &quot;</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="stringliteral">&quot;to start PyHoca-CLI. Exit code: %i&quot;</span>),</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; exit_code);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; gchar* errmsg = g_strdup_printf(</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; _(<span class="stringliteral">&quot;An unknown error occured while trying to start &quot;</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="stringliteral">&quot;PyHoca-CLI. Exit code: %i. Error: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; exit_code, (*error)-&gt;message);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</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;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> NULL;</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="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">return</span> standard_out;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;}</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="struct___connection_data.html"> 1016</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a> {</div><div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1"> 1017</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"><a class="line" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541"> 1018</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01019"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8"> 1019</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629"> 1020</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"><a class="line" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236"> 1021</a></span>&#160; gchar* <a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;};</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6"> 1036</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(GtkTreePath *path,</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; gboolean value,</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; GtkDialog *dialog) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!path || !dialog) {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; _(<span class="stringliteral">&quot;Neither the &#39;path&#39; nor &#39;dialog&#39; parameters are initialized.&quot;</span>)</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; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; }</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; GtkTreeModelFilter *filter = <a class="code" href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a>(</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; GTK_WIDGET(dialog), NULL);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; GtkTreeModel *model = gtk_tree_model_filter_get_model(filter);</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; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">if</span> (!model) <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; GtkTreeIter iter;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">if</span> (!gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &amp;iter, path)) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; _(<span class="stringliteral">&quot;GtkTreePath &#39;path&#39; describes a non-existing row!&quot;</span>)</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; ));</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; }</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="comment">// Make session either visible or invisible.</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; gtk_list_store_set(GTK_LIST_STORE(model), &amp;iter,</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a4c460e643be7fef5693898e95f6e43e0">SESSION_DIALOG_IS_VISIBLE</a>, value, -1);</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; <span class="comment">// Update row.</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &amp;iter);</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; <span class="comment">/* Get IS_VISIBLE flag of a session. */</span></div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="comment">// GValue ret_value = G_VALUE_INIT;</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="comment">// ret_value = rmplugin_x2go_session_chooser_get_property(GTK_WIDGET(dialog),</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">// SESSION_DIALOG_IS_VISIBLE,</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="comment">// path);</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="comment">// g_debug(&quot;Is visible: %s&quot;, g_value_get_boolean(&amp;ret_value) ? &quot;TRUE&quot; : &quot;FALSE&quot;);</span></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="l01081"></a><span class="lineno"> 1081</span>&#160; GtkWidget *term_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; GTK_DIALOG(dialog),</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; GtkWidget *resume_button = gtk_dialog_get_widget_for_response(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; GTK_DIALOG(dialog),</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>);</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"> 1088</span>&#160; <span class="comment">// If no (visible) row is left to terminate disable terminate and resume buttons.</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; gint rows_amount = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(filter), NULL);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">if</span> (rows_amount &lt;= 0) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; gtk_widget_set_sensitive(term_button, FALSE);</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; gtk_widget_set_sensitive(resume_button, FALSE);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; gtk_widget_set_sensitive(term_button, TRUE);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; gtk_widget_set_sensitive(resume_button, TRUE);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; }</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; <span class="comment">// Success, yay!</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;}</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb"> 1102</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(<span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a> *connect_data) {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="comment">/* Check connect_data. */</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) &lt;= 0 ||</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) &lt;= 0)</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; ));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</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; <span class="keywordflow">if</span> (!connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> &amp;&amp; (!connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> ||</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) &lt;= 0)) {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; ));</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">return</span> FALSE;</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="l01145"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9"> 1145</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9">rmplugin_x2go_pyhoca_terminate_session</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data)</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;{</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> ||</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> ||</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>) {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not fully initialized!&quot;</span>)</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; ));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="comment">// Extract data passed by X2GoCustomUserData *custom_data.</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="comment">//struct _DialogData *ddata = (struct _DialogData*) custom_data-&gt;dialog_data;</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a> *connect_data = (<span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; GtkTreePath* selected_row = (GtkTreePath*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a>;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; GtkDialog *dialog = GTK_DIALOG(custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> = NULL;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; gchar *<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> = NULL;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> = NULL;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> = NULL;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; gchar *<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a> = NULL;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; gboolean valid = <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(connect_data);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; ssh_privatekey = connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>) {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; ssh_passphrase = connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</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; }</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; host = connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; username = connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; }</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; GValue value = <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(GTK_WIDGET(dialog),</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; selected_row);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&amp;value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">const</span> gchar *session_id = g_value_get_string(&amp;value);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--terminate $SESSION_ID&#39; option.</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="comment">// (and of course auth related stuff)</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; gchar *argv[50];</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; gint argc = 0;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</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; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, host);</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"> 1206</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 1218</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, password);</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"> 1230</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; }</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; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;TERMINATE&quot;</span>)) {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--terminate&quot;</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, session_id);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;TERMINATE&quot;</span>));</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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"> 1242</span>&#160;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</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> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</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; }</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; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</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;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; GError* error = NULL;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv, &amp;error, envp);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; gchar *err_msg = g_strdup_printf(</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; _(<span class="stringliteral">&quot;An error occured while trying to terminate X2Go session &#39;%s&#39;:\n%s&quot;</span>),</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; session_id,</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; error-&gt;message</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; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, err_msg);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *err_ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(dialog)));</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;An error occured.&quot;</span>);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = err_msg;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; err_ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</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">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = err_ddata;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a> = NULL;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="comment">// Too verbose:</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="comment">// GtkTreeModel *model = gtk_tree_model_filter_get_model(</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="comment">// GTK_TREE_MODEL_FILTER(filter));</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="comment">// gtk_tree_model_foreach(GTK_TREE_MODEL(model), (GtkTreeModelForeachFunc)</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <span class="comment">// rmplugin_x2go_dump_session_properties, dialog);</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="comment">// Set row visible again since we couldn&#39;t terminate the session.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(selected_row, TRUE,</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; dialog)) {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; }</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;}</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;</div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479"> 1339</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479">rmplugin_x2go_session_chooser_callback</a>(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>* custom_data,</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; gint response_id,</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; GtkDialog *<span class="keyword">self</span>)</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;{</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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; <span class="keywordflow">if</span> (!custom_data || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> || !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> ||</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; !custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a>) {</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; _(<span class="stringliteral">&quot;Parameter &#39;custom_data&#39; is not initialized!&quot;</span>)</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ));</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp = (<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>*) custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a>;</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; <span class="comment">// Don&#39;t need to run other stuff, if the user just wants a new session.</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="comment">// Also it can happen, that no session is there anymore which can be selected!</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; if (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a37ecf143423a9ba7f52fd4826cf4226f">SESSION_CHOOSER_RESPONSE_NEW</a>) {</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;The user explicitly requested a new session. &quot;</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="stringliteral">&quot;Creating a new session…&quot;</span>);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; SET_RESUME_SESSION(gp, NULL);</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="comment">// We use a trick here. As long as there is something other</span></div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// than 0 stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</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; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; }</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="comment">// This assumes that there are sessions which can be selected!</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; GValue value = <a class="code" href="x2go__plugin_8c.html#a3ed48dd41c8b207454aa327a32cd19d7">rmplugin_x2go_session_chooser_get_property</a>(</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; GTK_WIDGET(<span class="keyword">self</span>),</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>,</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; NULL <span class="comment">// Let the function search for the selected row.</span></div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; );</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="comment">// error message was handled already.</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">if</span> (!G_VALUE_HOLDS_STRING(&amp;value)) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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; gchar *session_id = (gchar*) g_value_get_string(&amp;value);</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="keywordflow">if</span> (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a87bd4f0914a57967d1e0a1534961cdcc">SESSION_CHOOSER_RESPONSE_CHOOSE</a>) {</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) {</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get session ID from session chooser dialog.&quot;</span>)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; );</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; _(<span class="stringliteral">&quot;Resuming session: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; session_id</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="keywordflow">else</span> <span class="keywordflow">if</span> (response_id == <a class="code" href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05a65199e35b4769a2c6bd8590de08b05f4">SESSION_CHOOSER_RESPONSE_TERMINATE</a>) {</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">if</span> (!session_id || strlen(session_id) &lt;= 0) {</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; REMMINA_PLUGIN_DEBUG(</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get session ID from session chooser dialog.&quot;</span>)</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; );</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; SET_RESUME_SESSION(gp, session_id);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; _(<span class="stringliteral">&quot;Terminating session: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; session_id</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; ));</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"> 1416</span>&#160; GtkTreePath *path = <a class="code" href="x2go__plugin_8c.html#a1c60a927c4927871d84b2a86e2f877a3">rmplugin_x2go_session_chooser_get_selected_row</a>(</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keywordflow">if</span> (!path) <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="comment">// Actually set row invisible.</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#ab4ebe975e9b8b8ee1f6918d1c15f0ae6">rmplugin_x2go_session_chooser_set_row_visible</a>(path, FALSE, <span class="keyword">self</span>)) {</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// error message was already handled.</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="comment"> * connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="comment"> * opt1 -&gt; selected row (GtkTreePath*)</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment"> * opt2 -&gt; session selection dialog (GtkDialog*)</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="comment">// everything else is already initialized.</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = path;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#aa4469f7020bd9968688ee87b3b4d0c24">opt2</a> = <span class="keyword">self</span>;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="comment">// Actually start pyhoca-cli process with --terminate $session_id.</span></div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; g_thread_new(<span class="stringliteral">&quot;terminate-session-thread&quot;</span>,</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; (GThreadFunc) <a class="code" href="x2go__plugin_8c.html#a31af2942017984e0614a1ff7913cacc9">rmplugin_x2go_pyhoca_terminate_session</a>,</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; custom_data);</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"> 1443</span>&#160; <span class="comment">// Dialog should stay open.</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;User clicked dialog away. &quot;</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="stringliteral">&quot;Creating a new session then.&quot;</span>);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; SET_RESUME_SESSION(gp, NULL);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; }</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; <span class="comment">// Unstucking main process. Telling it that a session has been selected.</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="comment">// We use a trick here. As long as there is something other</span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="comment">// than 0 stored, a session is selected. So we use the gpointer as a gboolean.</span></div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; SET_SESSION_SELECTED(gp, (gpointer) TRUE);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; gtk_widget_destroy(GTK_WIDGET(<span class="keyword">self</span>));</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</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="preprocessor">#define RMPLUGIN_X2GO_FEATURE_GTKSOCKET 1</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;<span class="comment">/* Forward declaration */</span></div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68"> 1464</a></span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> <a class="code" href="x2go__plugin_8c.html#a59baf7f963dc3cdbd87224706cd73c68">rmplugin_x2go</a>;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">/* When more than one NX sessions is connecting in progress, we need this mutex and array</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment"> * to prevent them from stealing the same window ID.</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01469"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2"> 1469</a></span>&#160;<span class="keyword">static</span> pthread_mutex_t <a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>;</div><div class="line"><a name="l01470"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9"> 1470</a></span>&#160;<span class="keyword">static</span> GArray *<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="comment">/* ------------- Support for execution on main thread of GTK functions ------------- */</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;<span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;{</div><div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc"> 1475</a></span>&#160; <span class="keyword">enum</span> { FUNC_GTK_SOCKET_ADD_ID } func;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;</div><div class="line"><a name="l01477"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4"> 1477</a></span>&#160; GtkSocket* <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>;</div><div class="line"><a name="l01478"></a><span class="lineno"><a class="line" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8"> 1478</a></span>&#160; Window <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>;</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">/* Mutex for thread synchronization */</span></div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; pthread_mutex_t mu;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="comment">/* Flag to catch cancellations */</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; gboolean cancelled;</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;};</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;</div><div class="line"><a name="l01486"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1"> 1486</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1">onMainThread_cb</a>(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">if</span> (!d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a>) {</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">switch</span> (d-&gt;<a class="code" href="structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38">func</a>) {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">case</span> FUNC_GTK_SOCKET_ADD_ID:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; gtk_socket_add_id(d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; pthread_mutex_unlock(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="comment">/* thread has been cancelled, so we must free d memory here */</span></div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; g_free(d);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;}</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49"> 1504</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49">onMainThread_cleanup_handler</a>(gpointer data)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d = data;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a> = TRUE;</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;</div><div class="line"><a name="l01511"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53"> 1511</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">onMainThread_schedule_callback_and_wait</a>(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d)</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; TRACE_CALL(__func__);</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a75eab61445fbabacaa34f95e2437ea75">cancelled</a> = FALSE;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; pthread_cleanup_push(<a class="code" href="x2go__plugin_8c.html#a5dea604d34a804e23a5cd8a6683d9e49">onMainThread_cleanup_handler</a>, d);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; pthread_mutex_init(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>, NULL);</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; pthread_mutex_lock(&amp;d-&gt;<a class="code" href="structon_main_thread__cb__data.html#acd2e5f24279a00e0d426d67604dc8fbc">mu</a>);</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; gdk_threads_add_idle((GSourceFunc)<a class="code" href="x2go__plugin_8c.html#a9ba8e968998b64b3832e484a2ca7dfc1">onMainThread_cb</a>, (gpointer) d);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; pthread_mutex_lock(&amp;d-&gt;mu);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; pthread_cleanup_pop(0);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; pthread_mutex_unlock(&amp;d-&gt;mu);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; pthread_mutex_destroy(&amp;d-&gt;mu);</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;</div><div class="line"><a name="l01527"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43"> 1527</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GtkSocket* <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>, Window <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>)</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;{</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keyword">struct </span><a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a> *d;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; d = g_new0(<span class="keyword">struct</span> <a class="code" href="structon_main_thread__cb__data.html">onMainThread_cb_data</a>, 1);</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#ab5a747d3d76631e059d736ef286a6c38">func</a> = <a class="code" href="structon_main_thread__cb__data.html#ac7d6253a4d968601704770d8db13050eadb238fcd1e49b305021c338178922fbc">FUNC_GTK_SOCKET_ADD_ID</a>;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a> = <a class="code" href="structon_main_thread__cb__data.html#a6b2f9914552d4323f98a60e6bdcc99c4">sk</a>;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; d-&gt;<a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a> = <a class="code" href="structon_main_thread__cb__data.html#a2819729ddf9ffa92927a4ef7d3a6e0f8">w</a>;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <a class="code" href="x2go__plugin_8c.html#a390e3b371156197feb518b737a31cc53">onMainThread_schedule_callback_and_wait</a>(d);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; g_free(d);</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">/* /-/-/-/-/-/-/ Support for execution on main thread of GTK functions /-/-/-/-/-/-/ */</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;</div><div class="line"><a name="l01543"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d"> 1543</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a> (Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>)</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;{</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; gint i;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; gboolean already_seen = FALSE;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; pthread_mutex_lock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>-&gt;len; i++) {</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">if</span> (g_array_index(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, Window, i) == window_id) {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; already_seen = TRUE;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Window of X2Go Agent with ID [0x%lx] seen already.&quot;</span>,</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; window_id);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; }</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (already_seen) {</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; g_array_remove_index_fast(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, i);</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Forgetting about window of X2Go Agent with ID [0x%lx]…&quot;</span>,</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; window_id);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; }</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; pthread_mutex_unlock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;}</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a"> 1572</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;{</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; gchar *server;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; gint port;</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; 22,</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; &amp;server,</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; &amp;port);</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Disconnected from %s:%d via X2Go&quot;</span>), server, port);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; g_free(server), server = NULL;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordflow">if</span> (gpdata == NULL) {</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Exiting since gpdata is already &#39;NULL&#39;…&quot;</span>);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; }</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) {</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; pthread_cancel(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>) pthread_join(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>, NULL);</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;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>) {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="x2go__plugin_8c.html#a2f3106cb9e16e497bf1aa78a336a729d">rmplugin_x2go_remove_window_id</a>(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; }</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>) {</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; kill(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>, SIGTERM);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; g_spawn_close_pid(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> = 0;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; }</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>) {</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; XSetErrorHandler(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; XCloseDisplay(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>);</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; }</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; g_object_steal_data(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab58b7bf5f91c5f60349a8242e6322f7f">protocol_plugin_signal_connection_closed</a>(gp);</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;}</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div><div class="line"><a name="l01621"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321"> 1621</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;{</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a3fe6e076459db4ee337d70ef2c1d838a">disconnected</a>) {</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing since the plugin is already disconnected.&quot;</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; }</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>(gp);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="comment">// Try again.</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</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;</div><div class="line"><a name="l01639"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee"> 1639</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee">rmplugin_x2go_pyhoca_cli_exited</a>(GPid pid,</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; gint status,</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *<a class="code" href="structon_main_thread__cb__data.html#ad4019cdd5ac560eb1cd47d9f924831bb">gp</a>)</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;{</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</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"> 1645</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">if</span> (!gpdata) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing as the disconnection &quot;</span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="stringliteral">&quot;has already been handled.&quot;</span>);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> &lt;= 0) {</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Doing nothing since pyhoca-cli was expected to stop.&quot;</span>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <span class="keywordflow">return</span>;</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"> 1657</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;PyHoca-CLI exited unexpectedly. &quot;</span></div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="stringliteral">&quot;This connection will now be closed.&quot;</span>));</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;An error occured.&quot;</span>);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = _(<span class="stringliteral">&quot;The necessary child process &#39;pyhoca-cli&#39; stopped unexpectedly.\n&quot;</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="stringliteral">&quot;Please check your profile settings and PyHoca-CLI&#39;s output for &quot;</span></div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="stringliteral">&quot;possible errors. Also ensure the remote server is &quot;</span></div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="stringliteral">&quot;reachable and you&#39;re using the right credentials.&quot;</span>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</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; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="comment">// 1 Second. Give `Dialog` chance to open.</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; usleep(1000 * 1000);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(gp);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;}</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;</div><div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11"> 1700</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11">rmplugin_x2go_save_credentials</a>(<a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a>* remminafile,</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; gchar* s_username, gchar* s_password,</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; gchar* errmsg)</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;{</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="comment">// User has requested to save credentials. We put all the new credentials</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="comment">// into remminafile-&gt;settings. They will be saved later, on successful</span></div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="comment">// connection, by rcw.c</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keywordflow">if</span> (s_password &amp;&amp; s_username) {</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(s_username, <span class="stringliteral">&quot;&quot;</span>) == 0) {</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Can&#39;t save empty username!&quot;</span>), 512);</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="comment">//REMMINA_PLUGIN_CRITICAL(&quot;%s&quot;, errmsg); // No need.</span></div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="comment">// We allow the possibility to set an empty password because a X2Go</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="comment">// session can be still made using keyfiles or similar.</span></div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;password&quot;</span>,</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; s_password);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(remminafile, <span class="stringliteral">&quot;username&quot;</span>,</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; s_username);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; g_strlcpy(errmsg, g_strdup_printf(</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; _(<span class="stringliteral">&quot;Could not save new credentials.&quot;</span>)</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; ), 512);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;An error occured while trying to save &quot;</span></div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="stringliteral">&quot;new credentials: &#39;s_password&#39; or &quot;</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="stringliteral">&quot;&#39;s_username&#39; strings were not set.&quot;</span>));</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; }</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;}</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9"> 1744</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar *errmsg,</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; gchar **passphrase)</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;{</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; g_assert(errmsg != NULL);</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; g_assert(gp != NULL);</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span> ((*passphrase) == NULL) {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <span class="comment">// Just setting NULL password to empty password.</span></div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; (*passphrase) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; }</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; gint ret = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; gp, 0, _(<span class="stringliteral">&quot;Enter password to unlock the SSH key:&quot;</span>),</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; NULL, *passphrase, NULL, NULL</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; );</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; gchar *s_passphrase = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; <span class="keywordflow">if</span> (s_passphrase) {</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; (*passphrase) = g_strdup(s_passphrase);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; g_free(s_passphrase);</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Password input cancelled. Aborting…&quot;</span>), 512);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;}</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;</div><div class="line"><a name="l01786"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4"> 1786</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar* errmsg,</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; gchar** default_username, gchar** default_password)</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;{</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; g_assert(errmsg != NULL);</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; g_assert(gp != NULL);</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; g_assert(default_username != NULL);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; g_assert(default_password != NULL);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; <span class="comment">// default_username is probably NULL because the user didn&#39;t configure any</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; <span class="comment">// username in the profile settings.</span></div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keywordflow">if</span> ((*default_username) == NULL) {</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; gchar* l_errmsg = g_strdup_printf(</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; _(<span class="stringliteral">&quot;Tip: Check the &#39;Save password&#39; checkbox or manually input your &quot;</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="stringliteral">&quot;X2Go username and password in the profile settings to store &quot;</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="stringliteral">&quot;them for faster logins.&quot;</span>)</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; );</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, l_errmsg);</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; (*default_username) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; }</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; <span class="comment">// default_password is probably NULL because something did go wrong at the</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="comment">// secret-plugin. For example: The user didn&#39;t input a password for keyring or</span></div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="comment">// the user simply didn&#39;t configure a password in the profile settings.</span></div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">if</span> ((*default_password) == NULL) {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; (*default_password) = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; gchar *s_username, *s_password;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; gint ret;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; gboolean save;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; gboolean disable_password_storing;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; disable_password_storing = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a0c7eab256e1b1fdf84be44e28cddc3de">file_get_int</a>(</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; remminafile, <span class="stringliteral">&quot;disablepasswordstoring&quot;</span>, FALSE</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; );</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; ret = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a9b4cfe0a97a34260e58784feef693704">protocol_plugin_init_auth</a>(</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; gp, (disable_password_storing ? 0 :</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a9b734c324722cf2982768feaeeb15c7c">REMMINA_MESSAGE_PANEL_FLAG_SAVEPASSWORD</a> |</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <a class="code" href="types_8h.html#a341a0a8b6509633809d99348cc3ba486a10be0730fc3ea326856019ae139a922a">REMMINA_MESSAGE_PANEL_FLAG_USERNAME</a>),</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; _(<span class="stringliteral">&quot;Enter X2Go credentials&quot;</span>),</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; (*default_username), (*default_password), NULL, NULL</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; );</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">if</span> (ret == GTK_RESPONSE_OK) {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; s_username = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac892dd297fae87868752a1f86e07937d">protocol_plugin_init_get_username</a>(gp);</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; s_password = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ad98eaa3efc0214bc701dc66b5730e174">protocol_plugin_init_get_password</a>(gp);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="keywordflow">if</span> (rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp))</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a4880fb57479708bc1cb47bf6b4dcabc3">file_set_string</a>(</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; remminafile, <span class="stringliteral">&quot;password&quot;</span>, s_password</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; );</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="comment">// Should be renamed to protocol_plugin_init_get_savecredentials()?!</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; save = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#af2b857b2de1af3621f543b810f68b17b">protocol_plugin_init_get_savepassword</a>(gp);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (save) {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#adf5b78d93d823c4f9f79675b5e418c11">rmplugin_x2go_save_credentials</a>(remminafile, s_username,</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; s_password, errmsg)) {</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; }</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; }</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; <span class="keywordflow">if</span> (s_username) {</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; (*default_username) = g_strdup(s_username);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; g_free(s_username);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; }</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">if</span> (s_password) {</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; (*default_password) = g_strdup(s_password);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; g_free(s_password);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; }</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Authentication cancelled. Aborting…&quot;</span>), 512);</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; }</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;}</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01878"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850"> 1878</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850">rmplugin_x2go_get_pyhoca_sessions</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp, GError **error,</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160;{</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a>* gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160;</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; gchar *host = NULL;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; gchar *username = NULL;</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; gchar *password = NULL;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; gchar *ssh_privatekey = NULL;</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; gboolean valid = <a class="code" href="x2go__plugin_8c.html#a9a10942cbe118d3ca8458b667b0c5edb">rmplugin_x2go_verify_connection_data</a>(connect_data);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <span class="keywordflow">if</span> (valid) {</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>) password = connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>) {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; ssh_privatekey = connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keywordflow">if</span> (connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>) {</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; ssh_passphrase = connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; }</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; }</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; host = connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; username = connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="keywordflow">return</span> G_SOURCE_REMOVE;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; }</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--list-sessions&#39; option.</span></div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; gchar *argv[50];</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; gint argc = 0;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--list-sessions&quot;</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, host);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="keywordflow">if</span> (username) {</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; }</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; }</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, password);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; }</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; }</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; <span class="comment">// No need to catch feature-not-available error.</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; <span class="comment">// `--quiet` is not that important.</span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;QUIET&quot;</span>)) {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--quiet&quot;</span>);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; }</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="keywordflow">if</span> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; }</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; }</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; }</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>));</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <span class="comment">//#ifndef GLIB_AVAILABLE_IN_2_68</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; gchar* envp_splitted = g_strjoinv(<span class="stringliteral">&quot;;&quot;</span>, envp);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; envp_splitted = g_strconcat(envp_splitted, <span class="stringliteral">&quot;;LANG=C&quot;</span>, (<span class="keywordtype">void</span>*) NULL);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; envp = g_strsplit(envp_splitted, <span class="stringliteral">&quot;;&quot;</span>, 0);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;<span class="comment"> * #else</span></div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;<span class="comment"> * // Only available after glib version 2.68.</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;<span class="comment"> * // TODO: FIXME: NOT TESTED!</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;<span class="comment"> * GStrvBuilder* builder = g_strv_builder_new();</span></div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;<span class="comment"> * g_strv_builder_add(builder, &quot;LANG=C&quot;);</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160;<span class="comment"> * GStrv envp = g_strv_builder_end(builder);</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160;<span class="comment"> * #endif</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; gchar* std_out = <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv, error, envp);</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordflow">if</span> (!std_out || *error) {</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <span class="comment">// If no error is set but std_out is NULL</span></div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; g_assert((*error) != NULL);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordflow">return</span> std_out;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160;}</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160;</div><div class="line"><a name="l02026"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604"> 2026</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604">rmplugin_x2go_parse_pyhoca_sessions</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp,</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; GError **error,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160;{</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; gchar *pyhoca_output = NULL;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; pyhoca_output = <a class="code" href="x2go__plugin_8c.html#a164ae7ed206fba9bca6f910209f10850">rmplugin_x2go_get_pyhoca_sessions</a>(gp, error, connect_data);</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (!pyhoca_output || *error) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="comment">// If no error is set but pyhoca_output is NULL</span></div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; g_assert((*error) != NULL);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; }</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; gchar **lines_list = g_strsplit(pyhoca_output, <span class="stringliteral">&quot;\n&quot;</span>, -1);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="comment">// Assume at least two lines of output.</span></div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordflow">if</span> (lines_list == NULL || lines_list[0] == NULL || lines_list[1] == NULL) {</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t parse the output of PyHoca-CLI&#39;s &quot;</span></div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; <span class="stringliteral">&quot;--list-sessions option. Creating a new &quot;</span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="stringliteral">&quot;session now.&quot;</span>));</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; }</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; gboolean found_session = FALSE;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; GList* sessions = NULL;</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; gchar** session = NULL;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <span class="keywordflow">for</span> (guint i = 0; lines_list[i] != NULL; i++) {</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; gchar* current_line = lines_list[i];</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160;</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// TOO VERBOSE:</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="comment">//REMMINA_PLUGIN_DEBUG(&quot;pyhoca-cli: %s&quot;, current_line);</span></div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="comment">// Hardcoded string &quot;Session Name: &quot; comes from python-x2go.</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="keywordflow">if</span> (!g_str_has_prefix(current_line, <span class="stringliteral">&quot;Session Name: &quot;</span>) &amp;&amp; !found_session) {</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">// Doesn&#39;t begin with &quot;Session Name: &quot; and</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="comment">// the current line doesn&#39;t come after that either. Skipping.</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; }</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;Session Name: &quot;</span>)) {</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; gchar* session_id = NULL;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; gchar** line_list = g_strsplit(current_line, <span class="stringliteral">&quot;: &quot;</span>, 0);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; line_list[0] == NULL ||</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; line_list[1] == NULL ||</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; strlen(line_list[0]) &lt;= 0 ||</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; strlen(line_list[1]) &lt;= 0)</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; {</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; }</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; session = malloc(<span class="keyword">sizeof</span>(gchar*) * (<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>+1));</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <span class="keywordflow">if</span> (!session) {</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Couldn&#39;t allocate &quot;</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; <span class="stringliteral">&quot;enough memory!&quot;</span>));</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; }</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165acb18386ae4c6d87646ff0b63973ff0a2">SESSION_NUM_PROPERTIES</a>] = NULL;</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; sessions = g_list_append(sessions, session);</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; session_id = line_list[1];</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>] = session_id;</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160;</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; _(<span class="stringliteral">&quot;Found already existing X2Go session with ID: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a388a655fcee2c18abb79234a8a4eef94">SESSION_SESSION_ID</a>])</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; );</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; found_session = TRUE;</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; }</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <span class="keywordflow">if</span> (!found_session) {</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; }</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(current_line, <span class="stringliteral">&quot;-------------&quot;</span>) == 0) {</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; }</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; gchar* value = NULL;</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; gchar** line_list = g_strsplit(current_line, <span class="stringliteral">&quot;: &quot;</span>, 0);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordflow">if</span> (line_list == NULL ||</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; line_list[0] == NULL ||</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; line_list[1] == NULL ||</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; strlen(line_list[0]) &lt;= 0 ||</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; strlen(line_list[1]) &lt;= 0)</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; {</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="comment">// Probably the empty line at the end of every session.</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; }</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; value = line_list[1];</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;cookie: &quot;</span>)) {</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;cookie:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a068cdca754cf1240547311a7896f0817">SESSION_COOKIE</a>] = value;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;agent PID: &quot;</span>)) {</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;agent PID:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165af379eb48356f9912f3fe1d39ac163e03">SESSION_AGENT_PID</a>] = value;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;display: &quot;</span>)) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;display:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165add30b4757006df4bc3c06e54f6bfce3a">SESSION_DISPLAY</a>] = value;</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;status: &quot;</span>)) {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;S&quot;</span>) == 0) {</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; value = _(<span class="stringliteral">&quot;Suspended&quot;</span>);</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;R&quot;</span>) == 0) {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; value = _(<span class="stringliteral">&quot;Running&quot;</span>);</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_strcmp0(value, <span class="stringliteral">&quot;T&quot;</span>) == 0) {</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s translation.</span></div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; value = _(<span class="stringliteral">&quot;Terminated&quot;</span>);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; }</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;status:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2c8abd8773006b6629df76a38b2ecd9b">SESSION_STATUS</a>] = value;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;graphic port: &quot;</span>)) {</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;graphic port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a695a5bbc86348af93dd91c566ff36f53">SESSION_GRAPHIC_PORT</a>] = value;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;snd port: &quot;</span>)) {</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;snd port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a>] = value;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;sshfs port: &quot;</span>)) {</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;sshfs port:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a0161356b9e8d820c86dfc81d4ad2903b">SESSION_SSHFS_PORT</a>] = value;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;username: &quot;</span>)) {</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;username:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a6e4a495faba4c73cc560b9f388cdc961">SESSION_USERNAME</a>] = value;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;hostname: &quot;</span>)) {</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;hostname:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a2b7999cf0576ea2a030696831b30ec7a">SESSION_HOSTNAME</a>] = value;</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;create date: &quot;</span>)) {</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;create date:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a8b54a36c337ab651bb8e7eb213fe7172">SESSION_CREATE_DATE</a>] = value;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g_str_has_prefix(current_line, <span class="stringliteral">&quot;suspended since: &quot;</span>)) {</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;suspended since:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; session[<a class="code" href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165a081555600c90a11ad962e0b69cb9dfa0">SESSION_SUSPENDED_SINCE</a>] = value;</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Not supported:\t&#39;%s&#39;&quot;</span>, value);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; found_session = FALSE;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; }</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <span class="keywordflow">if</span> (!sessions) {</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; g_set_error(error, 1, 1,</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Could not find any sessions on remote machine. Creating a new &quot;</span></div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="stringliteral">&quot;session now.&quot;</span>)</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; );</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <span class="comment">// returning NULL with `error` set.</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; }</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <span class="keywordflow">return</span> sessions;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;}</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;</div><div class="line"><a name="l02198"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63"> 2198</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, GError **error,</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; <span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data)</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;{</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; <span class="keywordflow">if</span> (!connect_data ||</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> ||</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> ||</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; !connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> ||</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>) &lt;= 0 ||</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; strlen(connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>) &lt;= 0)</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="comment">// Allow empty passwords. Maybe the user wants to connect via public key?</span></div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; {</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; _(<span class="stringliteral">&quot;&#39;Invalid connection data.&#39;&quot;</span>)</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; ));</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; }</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; GList *sessions_list = NULL;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; sessions_list = <a class="code" href="x2go__plugin_8c.html#a161d67b872aa0a7988a3a9afd186d604">rmplugin_x2go_parse_pyhoca_sessions</a>(gp, error, connect_data);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; <span class="keywordflow">if</span> (!sessions_list || *error) {</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; <span class="comment">// If no error is set but sessions_list is NULL</span></div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; g_assert(*error != NULL);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; }</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="comment">// Prep new DialogData struct.</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a> *ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <span class="comment">//ddata-&gt;type = GTK_MESSAGE_QUESTION;</span></div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; <span class="comment">//ddata-&gt;buttons = GTK_BUTTONS_OK; // Doesn&#39;t get used in our custom factory.</span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;Choose a session to resume:&quot;</span>);</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160; <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="comment">// gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="comment">// dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <span class="comment">// connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a2c9096d0e798638c847fb1ceaf1a3479">rmplugin_x2go_session_chooser_callback</a>);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; <span class="comment">// gboolean factory(X2GoCustomUserData*, gpointer)</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <span class="comment">// X2GoCustomUserData*:</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="comment">// gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <span class="comment">// dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; <span class="comment">// connect_data -&gt; connection data (struct _ConnectionData*)</span></div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="comment">// gpointer: dialog_factory_data</span></div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = sessions_list;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a5b64d199d5f736b98acadcfcd8dffeb1">rmplugin_x2go_choose_session_dialog_factory</a>);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;</div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = connect_data;</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; <span class="comment">// Open dialog here. Dialog rmplugin_x2go_session_chooser_callback (callbackfunc)</span></div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="comment">// should set SET_RESUME_SESSION.</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; IDLE_ADD((GSourceFunc)<a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;</div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160; guint counter = 0;</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; <span class="keywordflow">while</span> (!IS_SESSION_SELECTED(gp)) {</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; <span class="comment">// 0.5 Seconds. Give dialog chance to open.</span></div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; usleep(500 * 1000);</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160;</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; <span class="comment">// Every 5 seconds</span></div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; <span class="keywordflow">if</span> (counter % 10 == 0 || counter == 0) {</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for user to select a session…&quot;</span>));</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; }</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; counter++;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; }</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; gchar* chosen_resume_session = GET_RESUME_SESSION(gp);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; <span class="keywordflow">if</span> (!chosen_resume_session || strlen(chosen_resume_session) &lt;= 0) {</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; g_set_error(error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;No session was selected. Creating a new one.&quot;</span>));</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; }</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <span class="keywordflow">return</span> chosen_resume_session;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160;}</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085"> 2291</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085">rmplugin_x2go_exec_x2go</a>(gchar *host,</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; gint sshport,</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; gchar *username,</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; gchar *password,</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160; gchar *command,</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; gchar *kbdlayout,</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; gchar *kbdtype,</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; gchar *audio,</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; gchar *clipboard,</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; gint dpi,</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; gchar *resolution,</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; gchar *ssh_privatekey,</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp,</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; gchar *errmsg)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;{</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; gchar *argv[50];</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; gint argc = 0;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160;</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <span class="comment">// We don&#39;t want to save any SSH passphrases on hard drive!</span></div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <span class="comment">// Thats why we will always ask if needed.</span></div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; gchar *ssh_passphrase = NULL;</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160;</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; <span class="keywordflow">if</span> (!username || strlen(username) &lt;= 0) {</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; <span class="comment">// Sets `username` and `password`.</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#acb42f76c9d02750597eb6504f1d400a4">rmplugin_x2go_get_auth</a>(gp, errmsg, &amp;username, &amp;password)) {</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; }</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; }</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <span class="comment">// Password can be *empty* but not NULL.</span></div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">if</span> (!password) {</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; password = g_strdup(<span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; }</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; strlen(ssh_privatekey) &gt; 0) {</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; <span class="comment">// FIXME: Check if file exists and is legit private key.</span></div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="comment">// See: https://security.stackexchange.com/a/245767</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; <span class="comment">// Get ssh_privatekey now via dialog.</span></div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#a25b6f161265e60c3275c479fb3eb3cb9">rmplugin_x2go_get_ssh_passphrase</a>(gp, errmsg, &amp;ssh_passphrase)) {</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; }</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; }</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___connection_data.html">_ConnectionData</a>* connect_data = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___connection_data.html">_ConnectionData</a>, 1);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a> = <a class="code" href="struct___connection_data.html#a5366b4138e2ff42c85f81a83a23cb2c1">host</a>;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a> = <a class="code" href="struct___connection_data.html#af15752c3cf9e16fff53be579bf747541">username</a>;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a> = <a class="code" href="struct___connection_data.html#a0b7548b539c507772e709e8867f6b1a8">password</a>;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a> = <a class="code" href="struct___connection_data.html#a6c5715c8a4da2ccdf272f6e23de4a629">ssh_privatekey</a>;</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; connect_data-&gt;<a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a> = <a class="code" href="struct___connection_data.html#a9bf0eafee9efa826d4dd89ba1f358236">ssh_passphrase</a>;</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160; GError *session_error = NULL;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; gchar* resume_session_id = <a class="code" href="x2go__plugin_8c.html#a7e099c196b443f83134b076e292cee63">rmplugin_x2go_ask_session</a>(gp, &amp;session_error,</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; connect_data);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; <span class="keywordflow">if</span> (!resume_session_id || session_error || strlen(resume_session_id) &lt;= 0) {</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; <span class="comment">// If no error is set but session_id is NULL</span></div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <span class="comment">// then something is not right at all.</span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; <span class="comment">// Most likely the developer forgot to add an error message. Crash.</span></div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; g_assert(session_error != NULL);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; _(<span class="stringliteral">&quot;A non-critical error happened: %s&quot;</span>),</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; session_error-&gt;message</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; ));</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; _(<span class="stringliteral">&quot;User chose to resume session with ID: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; resume_session_id</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; ));</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; }</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; argc = 0;</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--server&quot;</span>); <span class="comment">// Not listed as feature.</span></div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, host);</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>)) {</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-p&quot;</span>);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%d&quot;</span>, sshport);</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>));</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; }</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160; <span class="keywordflow">if</span> (resume_session_id &amp;&amp; strlen(resume_session_id) &gt; 0) {</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="comment">// TRANSLATORS: Please stick to X2GoClient&#39;s way of translating.</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; _(<span class="stringliteral">&quot;Resuming session &#39;%s&#39;…&quot;</span>),</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; resume_session_id</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; ));</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160;</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;RESUME&quot;</span>)) {</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--resume&quot;</span>);</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, resume_session_id);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;RESUME&quot;</span>));</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; }</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; }</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160;</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="comment">// Deprecated. The user either wants to continue a</span></div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; <span class="comment">// session or just not. No inbetween.</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; <span class="comment">// if (!resume_session_id) {</span></div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <span class="comment">// if (FEATURE_AVAILABLE(gpdata, &quot;TRY_RESUME&quot;)) {</span></div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="comment">// argv[argc++] = g_strdup(&quot;--try-resume&quot;);</span></div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="comment">// } else {</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="comment">// REMMINA_PLUGIN_DEBUG(&quot;%s&quot;, FEATURE_NOT_AVAIL_STR(&quot;TRY_RESUME&quot;));</span></div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="comment">// }</span></div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160;</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;USERNAME&quot;</span>)) {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-u&quot;</span>);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <span class="keywordflow">if</span> (username){</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, username);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, g_get_user_name());</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; }</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;USERNAME&quot;</span>));</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; }</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <span class="keywordflow">if</span> (password &amp;&amp; FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;PASSWORD&quot;</span>)) {</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keywordflow">if</span> (strlen(password) &gt; 0) {</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--force-password&quot;</span>);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--password&quot;</span>);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, password);</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; }</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;PASSWORD&quot;</span>));</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160;</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>)) {</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--auth-attempts&quot;</span>);</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, 0);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>));</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; }</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160;</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>)) {</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--non-interactive&quot;</span>);</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;NON_INTERACTIVE&quot;</span>));</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; }</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;COMMAND&quot;</span>)) {</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-c&quot;</span>);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; <span class="comment">// FIXME: pyhoca-cli is picky about multiple quotes around</span></div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; <span class="comment">// the command string...</span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="comment">// argv[argc++] = g_strdup_printf (&quot;%s&quot;, g_shell_quote(command));</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; argv[argc++] = g_strdup(command);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;COMMAND&quot;</span>));</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; }</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>)) {</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">if</span> (kbdlayout) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-layout&quot;</span>);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, kbdlayout);</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-layout&quot;</span>);</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;auto&quot;</span>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; }</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>));</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;KBD_TYPE&quot;</span>)) {</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <span class="keywordflow">if</span> (kbdtype) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-type&quot;</span>);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, kbdtype);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--kbd-type&quot;</span>);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;auto&quot;</span>);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;KBD_TYPE&quot;</span>));</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;GEOMETRY&quot;</span>)) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <span class="keywordflow">if</span> (!resolution)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; resolution = <span class="stringliteral">&quot;800x600&quot;</span>;</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;-g&quot;</span>);</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, resolution);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;GEOMETRY&quot;</span>));</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>)) {</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--terminate-on-ctrl-c&quot;</span>);</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; }</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SOUND&quot;</span>)) {</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; <span class="keywordflow">if</span> (audio) {</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--sound&quot;</span>);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%s&quot;</span>, audio);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--sound&quot;</span>);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;none&quot;</span>);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SOUND&quot;</span>));</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; }</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160;</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;CLIPBOARD_MODE&quot;</span>)) {</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; <span class="keywordflow">if</span> (clipboard) {</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--clipboard-mode&quot;</span>);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, clipboard);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; }</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;CLIPBOARD_MODE&quot;</span>));</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; }</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;DPI&quot;</span>)) {</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; <span class="comment">// Even though we validate the users input in the Remmina Editor,</span></div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; <span class="comment">// manipulating profile files is still very possible…</span></div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="comment">// Values are extracted from pyhoca-cli.</span></div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; <span class="keywordflow">if</span> (dpi &lt; 20 || dpi &gt; 400) {</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;DPI setting is out of bounds. Please adjust &quot;</span></div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; <span class="stringliteral">&quot;it in profile settings.&quot;</span>), 512);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; <span class="comment">// No need, start_session() will handle output.</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; <span class="comment">//REMMINA_PLUGIN_CRITICAL(&quot;%s&quot;, errmsg);</span></div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; }</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--dpi&quot;</span>);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; argv[argc++] = g_strdup_printf (<span class="stringliteral">&quot;%i&quot;</span>, dpi);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;DPI&quot;</span>));</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; }</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>)) {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; <span class="keywordflow">if</span> (ssh_privatekey &amp;&amp; !g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-privkey&quot;</span>);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_privatekey);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160; <span class="keywordflow">if</span> (ssh_passphrase &amp;&amp; !g_str_equal(ssh_passphrase, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keywordflow">if</span> (FEATURE_AVAILABLE(gpdata, <span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>)) {</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--ssh-passphrase&quot;</span>);</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; argv[argc++] = g_strdup_printf(<span class="stringliteral">&quot;%s&quot;</span>, ssh_passphrase);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PASSPHRASE&quot;</span>));</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; }</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; }</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; }</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, FEATURE_NOT_AVAIL_STR(<span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>));</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; }</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; GError *error = NULL;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; gchar **envp = g_get_environ();</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; gboolean success = g_spawn_async_with_pipes (NULL, argv, envp,</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; (G_SPAWN_DO_NOT_REAP_CHILD |</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; G_SPAWN_SEARCH_PATH), NULL,</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; NULL, &amp;gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>,</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; NULL, NULL, NULL, &amp;error);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160;</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Started PyHoca-CLI with the following arguments:&quot;</span>));</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; <span class="comment">// Print every argument except passwords. Free all arg strings.</span></div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; <span class="keywordflow">for</span> (gint i = 0; i &lt; argc - 1; i++) {</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; gchar* curr_arg = argv[i];</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordflow">if</span> (g_str_equal(curr_arg, <span class="stringliteral">&quot;--password&quot;</span>) ||</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; g_str_equal(curr_arg, <span class="stringliteral">&quot;--ssh-passphrase&quot;</span>)) {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; g_printf(<span class="stringliteral">&quot;XXXXXX &quot;</span>);</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; g_free(argv[++i]);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; g_printf(<span class="stringliteral">&quot;%s &quot;</span>, curr_arg);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; g_free(curr_arg);</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; }</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; g_printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="keywordflow">if</span> (!success || error) {</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="comment">// TRANSLATORS: Meta-error. Shouldn&#39;t be visible.</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; <span class="keywordflow">if</span> (!error) error = g_error_new(0, 0, _(<span class="stringliteral">&quot;Internal error.&quot;</span>));</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160;</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; gchar *error_title = _(<span class="stringliteral">&quot;An error occured while &quot;</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <span class="stringliteral">&quot;starting an X2Go session…&quot;</span>);</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160;</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; <span class="keyword">struct </span><a class="code" href="struct___dialog_data.html">_DialogData</a>* ddata = g_new0(<span class="keyword">struct</span> <a class="code" href="struct___dialog_data.html">_DialogData</a>, 1);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#ae5593c8e0d23accabe87f06449f5aa5a">parent</a> = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(gp)));</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a4110c1f36565f5926035c9ed1f060893">flags</a> = GTK_DIALOG_MODAL;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a1c48cea48c8dadf952e6ad684b8f89bb">type</a> = GTK_MESSAGE_ERROR;</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3cee753dca9f060cde0638c54e1466c4">buttons</a> = GTK_BUTTONS_OK;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#af9c5056ae12d845e8c8c30b5e57997d8">title</a> = _(<span class="stringliteral">&quot;Could not start X2Go session.&quot;</span>);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a093903efc52764f5593b546ce8ba5105">message</a> = g_strdup_printf(_(<span class="stringliteral">&quot;Could not start PyHoca-CLI (%i): &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; error-&gt;code,</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; error-&gt;message);</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="comment">// We don&#39;t need the response.</span></div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a20aaba191919fe9c83f5170ba6a394bd">callbackfunc</a> = NULL;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; <span class="comment">// We don&#39;t need a custom dialog either.</span></div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a27aede73b66f5c9d7da7eccbc585f85f">dialog_factory_func</a> = NULL;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; ddata-&gt;<a class="code" href="struct___dialog_data.html#a3354e4dfc0e1702842362187a1c856a7">dialog_factory_data</a> = NULL;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="comment">/* Prepare X2GoCustomUserData *custom_data</span></div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="comment"> * gp -&gt; gp (RemminaProtocolWidget*)</span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160;<span class="comment"> * dialog_data -&gt; dialog data (struct _DialogData*)</span></div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a> *custom_data = g_new0(<a class="code" href="struct___x2_go_custom_user_data.html">X2GoCustomUserData</a>, 1);</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; g_assert(custom_data &amp;&amp; <span class="stringliteral">&quot;custom_data could not be initialized.&quot;</span>);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160;</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a9efce2e3dd3b0b510cca2b8f40a7dff5">gp</a> = gp;</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a493352f3e39d06a80010d5c0364fed64">dialog_data</a> = ddata;</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#a7091e9cd5dd55bd4f245721ee5bc1c83">connect_data</a> = NULL;</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; custom_data-&gt;<a class="code" href="struct___x2_go_custom_user_data.html#ac46ce5ff0709268c5a667190cd10917b">opt1</a> = NULL;</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160;</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ae7c011949e82fd1076bd6d1ad53115aa">rmplugin_x2go_open_dialog</a>, custom_data);</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; g_strlcpy(errmsg, error_title, 512);</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="comment">// No need to output here. rmplugin_x2go_start_session will do this.</span></div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; g_error_free(error);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; <span class="comment">// Prevent a race condition where pyhoca-cli is not</span></div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <span class="comment">// started yet (pidx2go == 0) but a watcher is added.</span></div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160; <span class="comment">// 0.001 seconds.</span></div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160; ts.tv_nsec = 1 * 1000 * 1000;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; ts.tv_sec = 0;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160; <span class="keywordflow">while</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> == 0) {</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Waiting for PyHoca-CLI to start…&quot;</span>);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; };</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160;</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Watching child &#39;pyhoca-cli&#39; process now…&quot;</span>);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; g_child_watch_add(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a>,</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; (GChildWatchFunc) <a class="code" href="x2go__plugin_8c.html#acec567735d2cdea8eacbd39c088728ee">rmplugin_x2go_pyhoca_cli_exited</a>,</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; gp);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160;}</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160;</div><div class="line"><a name="l02640"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060"> 2640</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>()</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160;{</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160;</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160;<span class="preprocessor"> #define AMOUNT_FEATURES 43</span></div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; gchar* features[AMOUNT_FEATURES] = {</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; <span class="stringliteral">&quot;ADD_TO_KNOWN_HOSTS&quot;</span>, <span class="stringliteral">&quot;AUTH_ATTEMPTS&quot;</span>, <span class="stringliteral">&quot;BROKER_PASSWORD&quot;</span>, <span class="stringliteral">&quot;BROKER_URL&quot;</span>,</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160; <span class="stringliteral">&quot;CLEAN_SESSIONS&quot;</span>, <span class="stringliteral">&quot;COMMAND&quot;</span>, <span class="stringliteral">&quot;DEBUG&quot;</span>, <span class="stringliteral">&quot;FORCE_PASSWORD&quot;</span>, <span class="stringliteral">&quot;FORWARD_SSHAGENT&quot;</span>,</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; <span class="stringliteral">&quot;GEOMETRY&quot;</span>, <span class="stringliteral">&quot;KBD_LAYOUT&quot;</span>, <span class="stringliteral">&quot;KBD_TYPE&quot;</span>, <span class="stringliteral">&quot;LIBDEBUG&quot;</span>, <span class="stringliteral">&quot;LIBDEBUG_SFTPXFER&quot;</span>, <span class="stringliteral">&quot;LINK&quot;</span>,</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; <span class="stringliteral">&quot;LIST_CLIENT_FEATURES&quot;</span>, <span class="stringliteral">&quot;LIST_DESKTOPS&quot;</span>, <span class="stringliteral">&quot;LIST_SESSIONS&quot;</span>, <span class="stringliteral">&quot;NEW&quot;</span>, <span class="stringliteral">&quot;PACK&quot;</span>,</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; <span class="stringliteral">&quot;PASSWORD&quot;</span>, <span class="stringliteral">&quot;PDFVIEW_CMD&quot;</span>, <span class="stringliteral">&quot;PRINTER&quot;</span>, <span class="stringliteral">&quot;PRINTING&quot;</span>, <span class="stringliteral">&quot;PRINT_ACTION&quot;</span>, <span class="stringliteral">&quot;PRINT_CMD&quot;</span>,</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="stringliteral">&quot;QUIET&quot;</span>, <span class="stringliteral">&quot;REMOTE_SSH_PORT&quot;</span>, <span class="stringliteral">&quot;RESUME&quot;</span>, <span class="stringliteral">&quot;SAVE_TO_FOLDER&quot;</span>, <span class="stringliteral">&quot;SESSION_PROFILE&quot;</span>,</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <span class="stringliteral">&quot;SESSION_TYPE&quot;</span>, <span class="stringliteral">&quot;SHARE_DESKTOP&quot;</span>, <span class="stringliteral">&quot;SHARE_LOCAL_FOLDERS&quot;</span>, <span class="stringliteral">&quot;SHARE_MODE&quot;</span>, <span class="stringliteral">&quot;SOUND&quot;</span>,</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="stringliteral">&quot;SSH_PRIVKEY&quot;</span>, <span class="stringliteral">&quot;SUSPEND&quot;</span>, <span class="stringliteral">&quot;TERMINATE&quot;</span>, <span class="stringliteral">&quot;TERMINATE_ON_CTRL_C&quot;</span>, <span class="stringliteral">&quot;TRY_RESUME&quot;</span>,</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <span class="stringliteral">&quot;USERNAME&quot;</span>, <span class="stringliteral">&quot;XINERAMA&quot;</span></div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; };</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160;</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; GList *features_list = NULL;</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; AMOUNT_FEATURES; i++) {</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; features_list = g_list_append(features_list, features[i]);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; }</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160;</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; <span class="keywordflow">return</span> features_list;</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;}</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160;</div><div class="line"><a name="l02668"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d"> 2668</a></span>&#160;<span class="keyword">static</span> GList* <a class="code" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d">rmplugin_x2go_populate_available_features_list</a>()</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160;{</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160;</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; GList* returning_glist = NULL;</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160;</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <span class="comment">// We will now start pyhoca-cli with only the &#39;--list-cmdline-features&#39; option</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <span class="comment">// and depending on the exit code and standard output we will determine if some</span></div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160; <span class="comment">// features are available or not.</span></div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160;</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; gchar* argv[50];</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; gint argc = 0;</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;pyhoca-cli&quot;</span>);</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; argv[argc++] = g_strdup(<span class="stringliteral">&quot;--list-cmdline-features&quot;</span>);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; argv[argc++] = NULL;</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160;</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; GError* error = NULL; <span class="comment">// Won&#39;t be actually used.</span></div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160;</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <span class="comment">// Querying pyhoca-cli&#39;s command line features.</span></div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; gchar** envp = g_get_environ();</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; gchar* features_string = <a class="code" href="x2go__plugin_8c.html#a677f02c8a6a4d23577be167675144f67">rmplugin_x2go_spawn_pyhoca_process</a>(argc, argv,</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; &amp;error, envp);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; g_strfreev(envp);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160;</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; <span class="keywordflow">if</span> (!features_string || error) {</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; <span class="comment">// We added the &#39;--list-cmdline-features&#39; on commit 17d1be1319ba6 of</span></div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <span class="comment">// pyhoca-cli. In order to protect setups which don&#39;t have the newest</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <span class="comment">// version of pyhoca-cli available yet we artificially create a list</span></div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; <span class="comment">// of an old limited set of features.</span></div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160;</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; _(<span class="stringliteral">&quot;Couldn&#39;t get PyHoca-CLI&#39;s command-line features. This &quot;</span></div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; <span class="stringliteral">&quot;indicates it is either too old, or not installed. &quot;</span></div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; <span class="stringliteral">&quot;An old limited set of features will be used for now.&quot;</span>));</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>();</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; gchar **features_list = g_strsplit(features_string, <span class="stringliteral">&quot;\n&quot;</span>, 0);</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160;</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <span class="keywordflow">if</span> (features_list == NULL) {</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Could not parse PyHoca-CLI&#39;s command-line &quot;</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; <span class="stringliteral">&quot;features. Using a limited feature-set for now.&quot;</span>);</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; REMMINA_PLUGIN_WARNING(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <span class="keywordflow">return</span> <a class="code" href="x2go__plugin_8c.html#a18c51a44015ce39c2922060f35ecc060">rmplugin_x2go_old_pyhoca_features</a>();</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; }</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Retrieved the following PyHoca-CLI &quot;</span></div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <span class="stringliteral">&quot;command-line features:&quot;</span>));</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; features_list[k] != NULL; k++) {</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; <span class="comment">// Filter out empty strings</span></div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160; <span class="keywordflow">if</span> (strlen(features_list[k]) &lt;= 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160;</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>,</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; g_strdup_printf(_(<span class="stringliteral">&quot;Available feature[%i]: &#39;%s&#39;&quot;</span>),</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; k+1, features_list[k]));</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; returning_glist = g_list_append(returning_glist, features_list[k]);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; }</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; <span class="keywordflow">return</span> returning_glist;</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160; }</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160;}</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a"> 2731</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a">rmplugin_x2go_on_plug_added</a>(GtkSocket *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160;{</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160;</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; gchar *server;</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; gint port;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Socket %d&quot;</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>);</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ab212bed4baf8cba148fadb5773148ad6">protocol_plugin_signal_connection_opened</a>(gp);</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160;</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a673ff4320377c3b440dfd24a796c69fc">file_get_string</a>(remminafile, <span class="stringliteral">&quot;server&quot;</span>),</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; 22,</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; &amp;server,</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; &amp;port);</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; REMMINA_PLUGIN_AUDIT(_(<span class="stringliteral">&quot;Connected to %s:%d via X2Go&quot;</span>), server, port);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; g_free(server), server = NULL;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160;</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160;}</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160;</div><div class="line"><a name="l02754"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e"> 2754</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e">rmplugin_x2go_on_plug_removed</a>(GtkSocket *<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>, <a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160;{</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>(gp);</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160; <span class="keywordflow">return</span> G_SOURCE_CONTINUE;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;}</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;</div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38"> 2762</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38">rmplugin_x2go_init</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;{</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>, PLUGIN_NAME);</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160; gpdata = g_new0(<a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a>, 1);</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; g_object_set_data_full(G_OBJECT(gp), <span class="stringliteral">&quot;plugin-data&quot;</span>, gpdata, g_free);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; <span class="keywordflow">if</span> (!rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662">gtksocket_available</a>()) {</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; <span class="comment">/* report this in open_connection, not reportable here... */</span></div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; }</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160;</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; GList* <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a> = <a class="code" href="x2go__plugin_8c.html#aefc7e4961380ebb977d6ccbd9d12230d">rmplugin_x2go_populate_available_features_list</a>();</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160;</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; <span class="comment">// available_features can&#39;t be NULL cause if it fails, it gets populated with an</span></div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; <span class="comment">// old standard feature set.</span></div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a> = <a class="code" href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">available_features</a>;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = 0;</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a> = 0;</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> = 0;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a> = NULL;</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160;</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a> = gtk_socket_new();</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ac3fc04c8c7b20c35122e2786d9e8fc34">protocol_plugin_register_hostkey</a>(gp, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; gtk_widget_show(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; g_signal_connect(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">&quot;plug-added&quot;</span>,</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#ab24eb75755ed23f378cadca3393bd89a">rmplugin_x2go_on_plug_added</a>), gp);</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; g_signal_connect(G_OBJECT(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), <span class="stringliteral">&quot;plug-removed&quot;</span>,</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a4cec9198fd2b3ccbdd9c9c0216559e7e">rmplugin_x2go_on_plug_removed</a>), gp);</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; gtk_container_add(GTK_CONTAINER(gp), gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>);</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;}</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160;</div><div class="line"><a name="l02801"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a"> 2801</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a">rmplugin_x2go_try_window_id</a>(Window <a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>)</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160;{</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; gint i;</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160; gboolean already_seen = FALSE;</div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160;</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Check if the window of X2Go Agent with ID [0x%lx] is already known or if &quot;</span></div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; <span class="stringliteral">&quot;it needs registration&quot;</span>, window_id);</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160;</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; pthread_mutex_lock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>-&gt;len; i++) {</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <span class="keywordflow">if</span> (g_array_index(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, Window, i) == window_id) {</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160; already_seen = TRUE;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Window of X2Go Agent with ID [0x%lx] &quot;</span></div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; <span class="stringliteral">&quot;already seen.&quot;</span>, window_id);</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; }</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160; }</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordflow">if</span> (!already_seen) {</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160; g_array_append_val(<a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a>, window_id);</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Registered new window for X2Go Agent with &quot;</span></div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>&#160; <span class="stringliteral">&quot;ID [0x%lx].&quot;</span>, window_id);</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160; }</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; pthread_mutex_unlock(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160;</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; <span class="keywordflow">return</span> (!already_seen);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160;}</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;</div><div class="line"><a name="l02829"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26"> 2829</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26">rmplugin_x2go_dummy_handler</a>(Display *dsp, XErrorEvent *err)</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;{</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160;}</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119"> 2835</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp, gchar *errmsg)</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;{</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160;</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = XOpenDisplay(gdk_display_get_name(gdk_display_get_default()));</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; <span class="keywordflow">if</span> (gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> == NULL) {</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;Could not open X11 DISPLAY.&quot;</span>), 512);</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; }</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160;</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a> = XSetErrorHandler(<a class="code" href="x2go__plugin_8c.html#a96d6c94d188748ec1ce6a65a38305c26">rmplugin_x2go_dummy_handler</a>);</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160;</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; XSelectInput(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>,</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; XDefaultRootWindow(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>),</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160; SubstructureNotifyMask);</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160;</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;X11 event-watcher created.&quot;</span>);</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160;</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160;}</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160;</div><div class="line"><a name="l02857"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134"> 2857</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134">rmplugin_x2go_monitor_create_notify</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp,</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <span class="keyword">const</span> gchar *cmd,</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; gchar *errmsg)</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;{</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; gboolean agent_window_found = FALSE;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160; Atom atom;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; XEvent xev;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160; Window w;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160; Atom type;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keywordtype">int</span> format;</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> nitems, rest;</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *data = NULL;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; guint16 non_createnotify_count = 0;</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160;</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160; <span class="keyword">struct </span>timespec ts;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <span class="comment">// wait_amount * ts.tv_nsec = 20s</span></div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160; <span class="comment">// 100 * 0.2s = 20s</span></div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; <span class="keywordtype">int</span> wait_amount = 100;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; CANCEL_DEFER</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160;</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for window of X2Go Agent to appear…&quot;</span>));</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160;</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; atom = XInternAtom(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, <span class="stringliteral">&quot;WM_COMMAND&quot;</span>, True);</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">if</span> (atom == None) {</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; }</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; ts.tv_sec = 0;</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; <span class="comment">// 0.2s = 200000000ns</span></div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; ts.tv_nsec = 200000000;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160;</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; <span class="keywordflow">while</span> (wait_amount &gt; 0) {</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; pthread_testcancel();</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160; <span class="keywordflow">if</span> (!(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a096eb53491e1297c8119badfb75df393">pidx2go</a> &gt; 0)) {</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Waiting for X2Go session to start…&quot;</span>);</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; }</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160;</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; <span class="keywordflow">while</span> (!XPending(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>)) {</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160; nanosleep(&amp;ts, NULL);</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; wait_amount--;</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; <span class="comment">// Don&#39;t spam the console. Print every second though.</span></div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160; <span class="keywordflow">if</span> (wait_amount % 5 == 0) {</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; REMMINA_PLUGIN_INFO(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Waiting for PyHoca-CLI to &quot;</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; <span class="stringliteral">&quot;show the session&#39;s window…&quot;</span>));</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; }</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; }</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160;</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; XNextEvent(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, &amp;xev);</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; <span class="comment">// Just ignore non CreatNotify events.</span></div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; <span class="keywordflow">if</span> (xev.type != CreateNotify) {</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; non_createnotify_count++;</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160; <span class="keywordflow">if</span> (non_createnotify_count % 5 == 0) {</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Saw &#39;%i&#39; X11 events, which weren&#39;t &quot;</span></div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; <span class="stringliteral">&quot;CreateNotify.&quot;</span>, non_createnotify_count);</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; }</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; }</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160;</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; w = xev.xcreatewindow.window;</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160; <span class="keywordflow">if</span> (XGetWindowProperty(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>, w, atom, 0, 255, False,</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; AnyPropertyType, &amp;type, &amp;format, &amp;nitems, &amp;rest,</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; &amp;data) != Success) {</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Could not get WM_COMMAND property from X11 &quot;</span></div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <span class="stringliteral">&quot;window ID [0x%lx].&quot;</span>, w);</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; }</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; <span class="keywordflow">if</span> (data) {</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Saw &#39;%i&#39; X11 events, which weren&#39;t &quot;</span></div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; <span class="stringliteral">&quot;CreateNotify.&quot;</span>, non_createnotify_count);</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Found X11 window with WM_COMMAND set &quot;</span></div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; <span class="stringliteral">&quot;to &#39;%s&#39;, the window ID is [0x%lx].&quot;</span>,</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160; (<span class="keywordtype">char</span>*)data, w);</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; }</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <span class="keywordflow">if</span> (data &amp;&amp; g_strrstr((gchar*)data, cmd) &amp;&amp;</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; <a class="code" href="x2go__plugin_8c.html#a21257bb4c8022786bc77035dae0bbf0a">rmplugin_x2go_try_window_id</a>(w)) {</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a> = w;</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; agent_window_found = TRUE;</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; XFree(data);</div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; }</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; <span class="keywordflow">if</span> (data)</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; XFree(data);</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; }</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160;</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; XSetErrorHandler(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a81c09c0a216e8f6fab0eb03dc5140361">orig_handler</a>);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; XCloseDisplay(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a>);</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#abca43c87558a7cd7cba5f380e321cba5">display</a> = NULL;</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160;</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; <span class="keywordflow">if</span> (!agent_window_found) {</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; g_strlcpy(errmsg, _(<span class="stringliteral">&quot;No X2Go session window appeared. &quot;</span></div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; <span class="stringliteral">&quot;Something went wrong…&quot;</span>), 512);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;}</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a"> 2967</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a">rmplugin_x2go_start_session</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;{</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Function entry.&quot;</span>);</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160;</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);;</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <a class="code" href="types_8h.html#a112d7cc6c755209cabb68cf2a62ad515">RemminaFile</a> *remminafile;</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; <span class="keyword">const</span> gchar errmsg[512] = {0};</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; gboolean ret = TRUE;</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160;</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; gchar *servstr, *host, *username, *password, *command, *kbdlayout, *kbdtype,</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; *audio, *clipboard, *res, *ssh_privatekey;</div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; gint sshport, dpi;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; GdkDisplay *default_dsp;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; gint width, height;</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160;</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; <span class="comment">// We save the X Display name (:0) as we will need to synchronize the clipboards</span></div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160; default_dsp = gdk_display_get_default();</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160; <span class="keyword">const</span> gchar *default_dsp_name = gdk_display_get_name(default_dsp);</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Default display is &#39;%s&#39;.&quot;</span>, default_dsp_name);</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; remminafile = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a1409dcc143ddc35de86b792df095cfc4">protocol_plugin_get_file</a>(gp);</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160;</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; servstr = GET_PLUGIN_STRING(<span class="stringliteral">&quot;server&quot;</span>);</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160; <span class="keywordflow">if</span> (servstr) {</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a6fdfd3063906f49157225f536537bb0f">get_server_port</a>(servstr, 22, &amp;host, &amp;sshport);</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; }</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160;</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; <span class="keywordflow">if</span> (!sshport) sshport=22;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160;</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; username = GET_PLUGIN_STRING(<span class="stringliteral">&quot;username&quot;</span>);</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; password = GET_PLUGIN_PASSWORD(<span class="stringliteral">&quot;password&quot;</span>);</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; command = GET_PLUGIN_STRING(<span class="stringliteral">&quot;command&quot;</span>);</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="keywordflow">if</span> (!command) command = <span class="stringliteral">&quot;TERMINAL&quot;</span>;</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160;</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; kbdlayout = GET_PLUGIN_STRING(<span class="stringliteral">&quot;kbdlayout&quot;</span>);</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; kbdtype = GET_PLUGIN_STRING(<span class="stringliteral">&quot;kbdtype&quot;</span>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160;</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; audio = GET_PLUGIN_STRING(<span class="stringliteral">&quot;audio&quot;</span>);</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160;</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; clipboard = GET_PLUGIN_STRING(<span class="stringliteral">&quot;clipboard&quot;</span>);</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160;</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; dpi = GET_PLUGIN_INT(<span class="stringliteral">&quot;dpi&quot;</span>, 80);</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; ssh_privatekey = GET_PLUGIN_STRING(<span class="stringliteral">&quot;ssh_privatekey&quot;</span>);</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160;</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; <span class="comment">// If empty set to NULL</span></div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="keywordflow">if</span>(ssh_privatekey &amp;&amp; g_str_equal(ssh_privatekey, <span class="stringliteral">&quot;&quot;</span>)) {</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ssh_privatekey = NULL;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160; }</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; width = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#afe3c32a421cd5dcc735b99318ff8844a">get_profile_remote_width</a>(gp);</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; height = rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a2b75137f9d7739c0d7881ee16e2aabfa">get_profile_remote_height</a>(gp);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; <span class="comment">/* multiple of 4 */</span></div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160; width = (width + 3) &amp; ~0x3;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; height = (height + 3) &amp; ~0x3;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <span class="keywordflow">if</span> ((width &gt; 0) &amp;&amp; (height &gt; 0)) {</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; res = g_strdup_printf (<span class="stringliteral">&quot;%dx%d&quot;</span>, width, height);</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; res = <span class="stringliteral">&quot;800x600&quot;</span>;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; }</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Resolution set by user: &#39;%s&#39;.&quot;</span>, res);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160;</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; REMMINA_PLUGIN_DEBUG(<span class="stringliteral">&quot;Attached window to socket &#39;%d&#39;.&quot;</span>, gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a>);</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; <span class="comment">/* register for notifications of window creation events */</span></div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a>(gp, (gchar*)&amp;errmsg);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160;</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160; <span class="comment">/* trigger the session start, session window should appear soon after this */</span></div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a457f6a1e903198adf24f33d3e1636085">rmplugin_x2go_exec_x2go</a>(host, sshport, username, password, command,</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; kbdlayout, kbdtype, audio, clipboard, dpi,</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; res, ssh_privatekey, gp,</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160; (gchar*)&amp;errmsg);</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <span class="comment">/* get the window ID of the remote x2goagent */</span></div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160; <span class="keywordflow">if</span> (ret) ret = <a class="code" href="x2go__plugin_8c.html#a00fd0c2e4b95f4a93eddccb946d26134">rmplugin_x2go_monitor_create_notify</a>(gp, <span class="stringliteral">&quot;x2goagent&quot;</span>,</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; (gchar*)&amp;errmsg);</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160;</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; <span class="keywordflow">if</span> (!ret) {</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, errmsg);</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, <span class="stringliteral">&quot;%s&quot;</span>, &amp;errmsg);</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; }</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160;</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160; <span class="comment">/* embed it */</span></div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; <a class="code" href="x2go__plugin_8c.html#a31b9185763acddffe0bbdef41380bf43">onMainThread_gtk_socket_add_id</a>(GTK_SOCKET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>), gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a556145e479d666ec055ed1f907bd6022">window_id</a>);</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160;</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;}</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160;</div><div class="line"><a name="l03060"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619"> 3060</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619">rmplugin_x2go_main</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160;{</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160; gboolean ret = FALSE;</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160;</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; ret = <a class="code" href="x2go__plugin_8c.html#a52b923fd8a790c815a4afff065c3c08a">rmplugin_x2go_start_session</a>(gp);</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160;</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;}</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;</div><div class="line"><a name="l03072"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422"> 3072</a></span>&#160;<span class="keyword">static</span> gpointer <a class="code" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422">rmplugin_x2go_main_thread</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp)</div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;{</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; <span class="keywordflow">if</span> (!gp) {</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160; _(<span class="stringliteral">&quot;RemminaProtocolWidget* gp is &#39;NULL&#39;!&quot;</span>)</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160; ));</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160; }</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160;</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160;</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; CANCEL_ASYNC</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="x2go__plugin_8c.html#aaf02d627d85ffb57338fda226fb34619">rmplugin_x2go_main</a>(gp)) {</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160; IDLE_ADD((GSourceFunc) <a class="code" href="x2go__plugin_8c.html#ac64918df81607ee0b80ba6eb78bb338a">rmplugin_x2go_cleanup</a>, gp);</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>&#160; }</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160;}</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;</div><div class="line"><a name="l03093"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637"> 3093</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637">rmplugin_x2go_open_connection</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a> *gp)</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160;{</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160; <a class="code" href="struct___remmina_plugin_x2_go_data.html">RemminaPluginX2GoData</a> *gpdata = GET_PLUGIN_DATA(gp);</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160;</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; <span class="keywordflow">if</span> (!rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662">gtksocket_available</a>()) {</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;The %s protocol is &quot;</span></div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; <span class="stringliteral">&quot;unavailable because GtkSocket only works under X.org&quot;</span>),</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160; PLUGIN_NAME);</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; }</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#ab0d88dfa878a99bfd6bc2b79f20bdcfe">socket_id</a> = gtk_socket_get_id(GTK_SOCKET(gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#a10588addf4b97f37b01fa84f06ed9cb2">socket</a>));</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; <span class="comment">// casting to void* is allowed since return type &#39;gpointer&#39; is actually void*.</span></div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; <span class="keywordflow">if</span> (pthread_create(&amp;gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a>, NULL, (<span class="keywordtype">void</span>*) <a class="code" href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422">rmplugin_x2go_main_thread</a>, gp)) {</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160; rm_plugin_service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a7ac875d202f1ccd0ae85bb60ee3222c1">protocol_plugin_set_error</a>(gp, _(<span class="stringliteral">&quot;Could not initialize &quot;</span></div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160; <span class="stringliteral">&quot;pthread. Falling back to non-threaded mode…&quot;</span>));</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160; gpdata-&gt;<a class="code" href="struct___remmina_plugin_x2_go_data.html#aca25367be14cc65a5313151814f44916">thread</a> = 0;</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160; }</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160;}</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160;</div><div class="line"><a name="l03117"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada"> 3117</a></span>&#160;<span class="keyword">static</span> gboolean <a class="code" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada">rmplugin_x2go_query_feature</a>(<a class="code" href="struct___remmina_protocol_widget.html">RemminaProtocolWidget</a>* gp,</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a>* feature)</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;{</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; TRACE_CALL(__func__);</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;}</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>&#160;</div><div class="line"><a name="l03124"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f"> 3124</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_feature.html">RemminaProtocolFeature</a> <a class="code" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f">rmplugin_x2go_features</a>[] = {</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; {<a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a4a9b04df122e3a20c3ae51d90280fea7">REMMINA_PROTOCOL_FEATURE_TYPE_GTKSOCKET</a>, RMPLUGIN_X2GO_FEATURE_GTKSOCKET, NULL, NULL, NULL},</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; {<a class="code" href="types_8h.html#a77ae46c4fd739dcd8e819fe9cdae27c5a311d2a8dae8d3d7b9045b4b704f94fe4">REMMINA_PROTOCOL_FEATURE_TYPE_END</a>, 0, NULL, NULL, NULL}</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160;};</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160;</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160;</div><div class="line"><a name="l03140"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51"> 3140</a></span>&#160;<span class="keyword">static</span> gchar* <a class="code" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51">rmplugin_x2go_enumeration_prettifier</a>(<span class="keyword">const</span> guint max_elements,</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <span class="keyword">const</span> guint current_element,</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; gchar* element_to_add,</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; gchar* <span class="keywordtype">string</span>)</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160;{</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160; <span class="keywordflow">if</span> (max_elements &gt; 2) {</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160; <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to translate &#39;and&#39; into</span></div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; <span class="comment">// your language.</span></div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%sand &#39;%s&#39;&quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_element == max_elements - 2) {</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39; &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; <span class="comment">// &#39;value1&#39;, &#39;value2&#39;, &#39;valueN-1&#39; and &#39;valueN&#39;</span></div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39;, &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; }</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (max_elements == 2) {</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; <span class="keywordflow">if</span> (current_element == max_elements - 1) {</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to translate &#39;and&#39; into</span></div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <span class="comment">// your language.</span></div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; <span class="comment">// &#39;value1&#39; and &#39;value2&#39;</span></div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%sand &#39;%s&#39;&quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; <span class="comment">// TRANSLATORS: Presumably you just want to leave it english.</span></div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; <span class="comment">// (Except your listing-grammar differs from english.)</span></div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; <span class="comment">// &#39;value1&#39; and &#39;value2&#39;</span></div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; <span class="keywordflow">return</span> g_strdup_printf(_(<span class="stringliteral">&quot;%s&#39;%s&#39; &quot;</span>), <span class="keywordtype">string</span>, element_to_add);</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; }</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; <span class="keywordflow">return</span> g_strdup(element_to_add);</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; }</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160;}</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160;</div><div class="line"><a name="l03194"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a"> 3194</a></span>&#160;<span class="keyword">static</span> GError* <a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>(gchar* key, gchar* value,</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; gchar* data)</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160;{</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; GError *error = NULL;</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160;</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; <span class="keywordflow">if</span> (!data) {</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Invalid validation data in ProtocolSettings array!&quot;</span>);</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; }</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160;</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; gchar **elements_list = g_strsplit(data, <span class="stringliteral">&quot;,&quot;</span>, 0);</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160;</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; guint elements_amount = 0;</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; elements_amount = g_strv_length(elements_list);</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160;</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; <span class="keywordflow">if</span> (elements_list == NULL ||</div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; elements_list[0] == NULL ||</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; strlen(elements_list[0]) &lt;= 0)</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; {</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Validation data in ProtocolSettings array is invalid!&quot;</span>);</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; }</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160;</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; gchar *data_str = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; <span class="keywordflow">if</span> (!key || !value) {</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Parameters &#39;key&#39; or &#39;value&#39; are &#39;NULL&#39;!&quot;</span>));</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Internal error.&quot;</span>));</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; }</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160;</div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; <span class="keywordflow">for</span> (guint i = 0; elements_list[i] != NULL; i++) {</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; <span class="comment">// Don&#39;t wanna crash if elements_list[i] is NULL.</span></div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; gchar* element = elements_list[i] ? elements_list[i] : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; <span class="keywordflow">if</span> (g_strcmp0(value, element) == 0) {</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; <span class="comment">// We found value in elements_list. Value passed validation.</span></div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; }</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160;</div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; data_str = <a class="code" href="x2go__plugin_8c.html#a6ff1cacdb818634771aa5f324144bb51">rmplugin_x2go_enumeration_prettifier</a>(elements_amount, i,</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; element, data_str);</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; }</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160;</div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; <span class="keywordflow">if</span> (elements_amount &gt; 1) {</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Allowed values are %s.&quot;</span>), data_str);</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;The only allowed value is &#39;%s&#39;.&quot;</span>), data_str);</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; }</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160;</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; g_free(data_str);</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; g_strfreev(elements_list);</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160;</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160;}</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160;</div><div class="line"><a name="l03267"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5"> 3267</a></span>&#160;<span class="keyword">static</span> GError* <a class="code" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5">rmplugin_x2go_int_setting_validator</a>(gchar* key, gpointer value,</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160; gchar* data)</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160;{</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; GError *error = NULL;</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160;</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; gchar **integer_list = g_strsplit(data, <span class="stringliteral">&quot;;&quot;</span>, 0);</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160;</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; <span class="keywordflow">if</span> (integer_list == NULL ||</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; integer_list[0] == NULL ||</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; integer_list[1] == NULL ||</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; strlen(integer_list[0]) &lt;= 0 ||</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; strlen(integer_list[1]) &lt;= 0)</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; {</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; gchar *error_msg = _(<span class="stringliteral">&quot;Validation data in ProtocolSettings array is invalid!&quot;</span>);</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, error_msg);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; }</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160;</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; gint minimum;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; <a class="code" href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a> err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;minimum, integer_list[0], 10);</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; _(<span class="stringliteral">&quot;The lower limit is not a valid integer!&quot;</span>)</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; ));</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>) {</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; _(<span class="stringliteral">&quot;The lower limit is too high!&quot;</span>)</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; ));</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; _(<span class="stringliteral">&quot;The lower limit is too low!&quot;</span>)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; ));</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>)</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; ));</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; }</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160;</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Please check the RemminaProtocolSetting &quot;</span></div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; <span class="stringliteral">&quot;array for possible errors.&quot;</span>));</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; }</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160;</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; gint maximum;</div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;maximum, integer_list[1], 10);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; _(<span class="stringliteral">&quot;The upper limit is not a valid integer!&quot;</span>)</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; ));</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a>) {</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; _(<span class="stringliteral">&quot;The upper limit is too high!&quot;</span>)</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; ));</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; _(<span class="stringliteral">&quot;The upper limit is too low!&quot;</span>)</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; ));</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, g_strdup_printf(</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; _(<span class="stringliteral">&quot;Internal error: %s&quot;</span>),</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>)</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; ));</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; }</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160;</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; REMMINA_PLUGIN_CRITICAL(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Please check the RemminaProtocolSetting &quot;</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; <span class="stringliteral">&quot;array for possible errors.&quot;</span>));</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; }</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; gint int_value;</div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; err = <a class="code" href="x2go__plugin_8c.html#a303c6e8a94bccf82dd36e4e2f28f6645">str2int</a>(&amp;int_value, value, 10);</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11ab707e862e6b3b1de59dc8af626c3adee">STR2INT_INCONVERTIBLE</a>) {</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; <span class="comment">// non-numerical characters are can&#39;t be entered but, the user can</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; <span class="comment">// input an empty string.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;The input is not a valid integer!&quot;</span>));</div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11af01a7feda17ea0ad82489cfb205a9850">STR2INT_OVERFLOW</a> || err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a2fdd99b1c9b4d38bc51f6974820190b8">STR2INT_UNDERFLOW</a>) {</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Input must be a number between %i and %i.&quot;</span>),</div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; minimum, maximum);</div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11aa2e4616cd6e0962ab2c49d08c0f46b8d">STR2INT_INVALID_DATA</a>) {</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; g_set_error(&amp;error, 1, 1, <span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;Something unknown went wrong.&quot;</span>));</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; }</div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160;</div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; <span class="keywordflow">if</span> (error) {</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; }</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160;</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; <span class="comment">/*REMMINA_PLUGIN_DEBUG(&quot;Key: \t%s&quot;, (gchar*) key);</span></div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Value:\t%s&quot;, (gchar*) value);</span></div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Data: \t%s&quot;, data);</span></div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Min: %i, Max: %i&quot;, minimum, maximum);</span></div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160;<span class="comment"> REMMINA_PLUGIN_DEBUG(&quot;Value converted:\t%i&quot;, int_value);*/</span></div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160;</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; <span class="keywordflow">if</span> (err == <a class="code" href="x2go__plugin_8c.html#a756badc8d3d2f11f40236b4f6eb3ad11a9e40a7e8442f48c6ddf3a291fa0ad1d1">STR2INT_SUCCESS</a> &amp;&amp; (minimum &gt; int_value || int_value &gt; maximum)) {</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; g_set_error(&amp;error, 1, 1, _(<span class="stringliteral">&quot;Input must be a number between %i and %i.&quot;</span>),</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; minimum, maximum);</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; }</div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160;</div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; <span class="comment">// Should be NULL.</span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; <span class="keywordflow">return</span> error;</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160;}</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160;</div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160;<span class="comment">/* Array of RemminaProtocolSetting for basic settings.</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160;<span class="comment"> * Each item is composed by:</span></div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160;<span class="comment"> * a) RemminaProtocolSettingType for setting type</span></div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160;<span class="comment"> * b) Setting name</span></div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160;<span class="comment"> * c) Setting description</span></div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160;<span class="comment"> * d) Compact disposition</span></div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160;<span class="comment"> * e) Values for REMMINA_PROTOCOL_SETTING_TYPE_SELECT or REMMINA_PROTOCOL_SETTING_TYPE_COMBO</span></div><div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160;<span class="comment"> * f) Setting tooltip</span></div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160;<span class="comment"> * g) Validation data pointer, will be passed to the validation callback method.</span></div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160;<span class="comment"> * h) Validation callback method (Can be NULL. Every entry will be valid then.)</span></div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160;<span class="comment"> * use following prototype:</span></div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160;<span class="comment"> * gboolean mysetting_validator_method(gpointer key, gpointer value,</span></div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160;<span class="comment"> * gpointer validator_data);</span></div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160;<span class="comment"> * gpointer key is a gchar* containing the setting&#39;s name,</span></div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160;<span class="comment"> * gpointer value contains the value which should be validated,</span></div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;<span class="comment"> * gpointer validator_data contains your passed data.</span></div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l03395"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9"> 3395</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="struct___remmina_protocol_setting.html">RemminaProtocolSetting</a> <a class="code" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9">rmplugin_x2go_basic_settings</a>[] = {</div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a>, <span class="stringliteral">&quot;server&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;username&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Username&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae76d06b6e313971e5f420dd6e7f4c5aa">REMMINA_PROTOCOL_SETTING_TYPE_PASSWORD</a>, <span class="stringliteral">&quot;password&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Password&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;command&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Startup program&quot;</span>), FALSE,</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;MATE,KDE,XFCE,LXDE,TERMINAL&quot;</span>,</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Which command should be executed after creating the X2Go session?&quot;</span>), NULL, NULL},</div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350aa045109309280606ff11a9de1862e2ba">REMMINA_PROTOCOL_SETTING_TYPE_RESOLUTION</a>, <span class="stringliteral">&quot;resolution&quot;</span>, NULL, FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;kbdlayout&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Keyboard Layout (auto)&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a8be3f210c609fde31f68e607c41de296">REMMINA_PROTOCOL_SETTING_TYPE_TEXT</a>, <span class="stringliteral">&quot;kbdtype&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Keyboard type (auto)&quot;</span>), FALSE, NULL, NULL, NULL, NULL},</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;audio&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Audio support&quot;</span>), FALSE,</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;pulse,esd,none&quot;</span>,</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;The sound system of the X2Go server (default: &#39;pulse&#39;).&quot;</span>),</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;pulse,esd,none&quot;</span>,</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>)},</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ae2237632b23d3c90a842bc5bc8302ec5">REMMINA_PROTOCOL_SETTING_TYPE_COMBO</a>, <span class="stringliteral">&quot;clipboard&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Clipboard direction&quot;</span>), FALSE,</div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; <span class="comment">/* SELECT &amp; COMBO Values */</span> <span class="stringliteral">&quot;none,server,client,both&quot;</span>,</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Which direction should clipboard content be copied? &quot;</span></div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; <span class="stringliteral">&quot;(default: &#39;both&#39;).&quot;</span>),</div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;none,server,client,both&quot;</span>,</div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a8be68c2aeb275f99167e5ea0b324f85a">rmplugin_x2go_string_setting_validator</a>)},</div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ab4c68b7df42ebd08e953cc72c5b97583">REMMINA_PROTOCOL_SETTING_TYPE_INT</a>, <span class="stringliteral">&quot;dpi&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;DPI resolution&quot;</span>), FALSE, NULL,</div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; <span class="comment">/* Tooltip */</span> <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Launch session with a specific resolution (in dots per inch). &quot;</span></div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; <span class="stringliteral">&quot;Must be between 20 and 400.&quot;</span>),</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160; <span class="comment">/* Validation data */</span> <span class="stringliteral">&quot;20;400&quot;</span>, <span class="comment">// &quot;&lt;min&gt;;&lt;max&gt;;&quot;</span></div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; <span class="comment">/* Validation method */</span> G_CALLBACK(<a class="code" href="x2go__plugin_8c.html#a832a7c01899fc4a22975e2aba019e1f5">rmplugin_x2go_int_setting_validator</a>)},</div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350a31ee66fffaa245ae411aba0c296ad9da">REMMINA_PROTOCOL_SETTING_TYPE_FILE</a>, <span class="stringliteral">&quot;ssh_privatekey&quot;</span>, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;SSH identity file&quot;</span>), FALSE, NULL, <a class="code" href="vnc__plugin_8c.html#ab96ef9227ecef94018f2729f72e7651e">N_</a>(<span class="stringliteral">&quot;Your private key&quot;</span>), NULL, NULL },</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; {<a class="code" href="types_8h.html#aee1a3e130e6991978acd907b52204350ad898beb6ae625dee1ae27de75f1ab4e3">REMMINA_PROTOCOL_SETTING_TYPE_END</a>, NULL, NULL, FALSE, NULL, NULL, NULL, NULL}};</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160;<span class="comment">/* Protocol plugin definition and features */</span></div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___remmina_protocol_plugin.html">RemminaProtocolPlugin</a> rmplugin_x2go = {</div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; <a class="code" href="plugin_8h.html#aaf53c620d115a4642130227cff4a624aa45e094c248384c12cdafd9d088e4aa24">REMMINA_PLUGIN_TYPE_PROTOCOL</a>, <span class="comment">// Type</span></div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; PLUGIN_NAME, <span class="comment">// Name</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; PLUGIN_DESCRIPTION, <span class="comment">// Description</span></div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; GETTEXT_PACKAGE, <span class="comment">// Translation domain</span></div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; PLUGIN_VERSION, <span class="comment">// Version number</span></div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; PLUGIN_APPICON, <span class="comment">// Icon for normal connection</span></div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160; PLUGIN_SSH_APPICON, <span class="comment">// Icon for SSH connection</span></div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160; <a class="code" href="x2go__plugin_8c.html#a71dcd8bd6ea5810a7299fa01b675baf9">rmplugin_x2go_basic_settings</a>, <span class="comment">// Array for basic settings</span></div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; NULL, <span class="comment">// Array for advanced settings</span></div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160; <a class="code" href="types_8h.html#a64c62354cc2b7baa50e1d73dcd3df9c7a8f910597287a73453a5f09ca0037d093">REMMINA_PROTOCOL_SSH_SETTING_NONE</a>, <span class="comment">// SSH settings type</span></div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160; <a class="code" href="x2go__plugin_8c.html#a68c599f47bcfdc7702e0e11410f2939f">rmplugin_x2go_features</a>, <span class="comment">// Array for available features</span></div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160; <a class="code" href="x2go__plugin_8c.html#a874b245f21511f87e417e48e867ccb38">rmplugin_x2go_init</a>, <span class="comment">// Plugin initialization method</span></div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160; <a class="code" href="x2go__plugin_8c.html#ae21f0dac3fc86e0809be44ccf97b5637">rmplugin_x2go_open_connection</a>, <span class="comment">// Plugin open connection method</span></div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160; <a class="code" href="x2go__plugin_8c.html#a8bb1f63c7ea5f949fef485fc2cc09321">rmplugin_x2go_close_connection</a>, <span class="comment">// Plugin connection-method closure</span></div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160; <a class="code" href="x2go__plugin_8c.html#af64a08d96c442369520de356c40d1ada">rmplugin_x2go_query_feature</a>, <span class="comment">// Query for available features</span></div><div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160; NULL, <span class="comment">// Call a feature</span></div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160; NULL, <span class="comment">// Send a keystroke</span></div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160; NULL, <span class="comment">// Screenshot</span></div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160;};</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160;</div><div class="line"><a name="l03446"></a><span class="lineno"><a class="line" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208"> 3446</a></span>&#160;G_MODULE_EXPORT gboolean <a class="code" href="x2go__plugin_8c.html#a56e5020de11446dbc23f3480e313f208">remmina_plugin_entry</a>(<a class="code" href="struct___remmina_plugin_service.html">RemminaPluginService</a> *service)</div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160;{</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160; TRACE_CALL(<span class="stringliteral">&quot;remmina_plugin_entry&quot;</span>);</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160; rm_plugin_service = service;</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160;</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160; bindtextdomain(GETTEXT_PACKAGE, REMMINA_RUNTIME_LOCALEDIR);</div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160; bind_textdomain_codeset(GETTEXT_PACKAGE, <span class="stringliteral">&quot;UTF-8&quot;</span>);</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;</div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160; <span class="keywordflow">if</span> (!service-&gt;<a class="code" href="struct___remmina_plugin_service.html#a529cc64f67b16f13f0445add690a8df2">register_plugin</a>((<a class="code" href="struct___remmina_plugin.html">RemminaPlugin</a> *) &amp;rmplugin_x2go)) {</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160; <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160; }</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160;</div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; pthread_mutex_init(&amp;<a class="code" href="x2go__plugin_8c.html#a5f054e33e1f9086ade1868e09396c2c2">remmina_x2go_init_mutex</a>, NULL);</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160; <a class="code" href="x2go__plugin_8c.html#acb28505c6a55be236da68c16efda30f9">remmina_x2go_window_id_array</a> = g_array_new(FALSE, TRUE, <span class="keyword">sizeof</span>(Window));</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160;</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160; REMMINA_PLUGIN_MESSAGE(<span class="stringliteral">&quot;%s&quot;</span>, _(<span class="stringliteral">&quot;X2Go plugin loaded.&quot;</span>));</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160;</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160; <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160;}</div><div class="ttc" id="types_8h_html_aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92"><div class="ttname"><a href="types_8h.html#aee1a3e130e6991978acd907b52204350a579ed0f0f6624dd55a25665693c92a92">REMMINA_PROTOCOL_SETTING_TYPE_SERVER</a></div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00100">types.h:100</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_a67c8a0919a4117622b85f85037dc7119"><div class="ttname"><a href="x2go__plugin_8c.html#a67c8a0919a4117622b85f85037dc7119">rmplugin_x2go_start_create_notify</a></div><div class="ttdeci">static gboolean rmplugin_x2go_start_create_notify(RemminaProtocolWidget *gp, gchar *errmsg)</div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l02835">x2go_plugin.c:2835</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_aeaf38d9ed0a9dc7abcd71e1cd97fdb7b"><div class="ttname"><a href="x2go__plugin_8c.html#aeaf38d9ed0a9dc7abcd71e1cd97fdb7b">str2int_errno</a></div><div class="ttdeci">enum _str2int_errno str2int_errno</div></div>
<div class="ttc" id="struct___remmina_plugin_x2_go_data_html"><div class="ttname"><a href="struct___remmina_plugin_x2_go_data.html">_RemminaPluginX2GoData</a></div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l00138">x2go_plugin.c:138</a></div></div>
@@ -167,7 +167,6 @@ $(document).ready(function(){initNavTree('x2go__plugin_8c_source.html','');});
<div class="ttc" id="struct___remmina_plugin_service_html_ae990775845392eace305018b4cd87662"><div class="ttname"><a href="struct___remmina_plugin_service.html#ae990775845392eace305018b4cd87662">_RemminaPluginService::gtksocket_available</a></div><div class="ttdeci">gboolean(* gtksocket_available)(void)</div><div class="ttdef"><b>Definition:</b> <a href="plugin_8h_source.html#l00250">plugin.h:250</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_a4fa72bcab8d3e683f6079f1aad2d1422"><div class="ttname"><a href="x2go__plugin_8c.html#a4fa72bcab8d3e683f6079f1aad2d1422">rmplugin_x2go_main_thread</a></div><div class="ttdeci">static gpointer rmplugin_x2go_main_thread(RemminaProtocolWidget *gp)</div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l03072">x2go_plugin.c:3072</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_a50f386c341d457e0084b036781941a05"><div class="ttname"><a href="x2go__plugin_8c.html#a50f386c341d457e0084b036781941a05">SESSION_CHOOSER_RESPONSE_TYPE</a></div><div class="ttdeci">SESSION_CHOOSER_RESPONSE_TYPE</div><div class="ttdoc">These define the responses of session-chooser-dialog&amp;#39;s buttons. </div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l00367">x2go_plugin.c:367</a></div></div>
-<div class="ttc" id="rmnews_8c_html_a175c6dbec04bf34e3f2a5bd791d2d336"><div class="ttname"><a href="rmnews_8c.html#a175c6dbec04bf34e3f2a5bd791d2d336">session</a></div><div class="ttdeci">static SoupSession * session</div><div class="ttdef"><b>Definition:</b> <a href="rmnews_8c_source.html#l00076">rmnews.c:76</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_ad7958dd5e9c0d344c88ee0885803b358"><div class="ttname"><a href="x2go__plugin_8c.html#ad7958dd5e9c0d344c88ee0885803b358">rmplugin_x2go_session_chooser_get_filter_model</a></div><div class="ttdeci">static GtkTreeModelFilter * rmplugin_x2go_session_chooser_get_filter_model(GtkWidget *dialog, GtkTreeView *treeview)</div><div class="ttdoc">Uses either &amp;#39;dialog&amp;#39; or &amp;#39;treeview&amp;#39; to return the GtkTreeModel of the Session-Chooser-Dialog. </div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l00702">x2go_plugin.c:702</a></div></div>
<div class="ttc" id="x2go__plugin_8c_html_aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7"><div class="ttname"><a href="x2go__plugin_8c.html#aa1e2d6e65389dd8fc61e38cffca98165aebbdaf08ac05790b9d8c6cc1ed1f4fb7">SESSION_SND_PORT</a></div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l00185">x2go_plugin.c:185</a></div></div>
<div class="ttc" id="struct___remmina_plugin_x2_go_data_html_a642dc28885abcd14f90fd8710b220e2e"><div class="ttname"><a href="struct___remmina_plugin_x2_go_data.html#a642dc28885abcd14f90fd8710b220e2e">_RemminaPluginX2GoData::available_features</a></div><div class="ttdeci">GList * available_features</div><div class="ttdef"><b>Definition:</b> <a href="x2go__plugin_8c_source.html#l00152">x2go_plugin.c:152</a></div></div>